Мы добавляем приведенный ниже код, чтобы проверить, присутствует ли расширение данных или кто-то случайно удалил его, поскольку мы извлекаем контент (только с одной строкой) из DE для отображения на облачной странице, если кто-то случайно удалит его, не должно быть ошибки 500, поэтому мы реализована попытка и поймать в SSJS.

Но также нам нужно убедиться, что если кто-то случайно удалит данные из DE, то это также должно быть зафиксировано в блоке Try, мы пытались, но безуспешно. Ниже приведен код.

   <script runat=server language="JavaScript">

   var HeaderDE , HeaderDECheckRowCount ;
   HeaderDE = "DataExtension_Name";

try {
      HeaderDE = Platform.Function.LookupRows(HeaderDE,'Id','1'); /* to check DE is exist or not */ - working fine 
      HeaderDECheckRowCount = Platform.Function.rowcount(HeaderDE); /* to check DE has at least one row */  - not working 
 
if (HeaderD > 0)
 {
      HeaderDEExist = true;
 }
 else
 {
   HeaderDEExist = false;
 }
    }
catch (e) 
    {
       HeaderDEExist = false;
    }

Platform.Variable.SetValue("@HeaderDEExist",HeaderDEExist);

</script>

Мы можем проверить и обработать, удаляем ли мы DE, но не можем поймать, удалили ли кто-то данные из DE, DE имеет только одну строку

0
Jonas Lamberty 16 Окт 2021 в 12:14

2 ответа

Лучший ответ

Обратитесь к документации Platform.Function.LookupRows за примером того, как эмулировать количество строк:

https://developer.salesforce.com/docs/marketing/marketing-cloud/guide/ssjs_platformDataExtensionLookupRows.html

По сути, вы просто смотрите на результат Platform.Function.LookupRows как на массив, которым он является, и подсчитываете его элементы (= вы подсчитываете строки).

<script runat="server">
     var dataRows = Platform.Function.LookupRows('CustomerData',['FirstName','LastName'],['Angela','Cruz']);
     if(dataRows && dataRows.length > 0) {
          for(var i=0; i<dataRows.length; i++) {
               Platform.Response.Write(dataRows[i]["Email"]);
          }
     }
</script>

Ваш конкретный пример, конечно, может избавиться от цикла for:

<script runat="server">
     var dataRows = Platform.Function.LookupRows('CustomerData',['FirstName','LastName'],['Angela','Cruz']);
     if(dataRows && dataRows.length > 0) {
          /* check for at least one record was successful, perform rest of code */
     }
</script>
1
Jonas Lamberty 16 Окт 2021 в 12:12

Ссылаясь на Страница SF, я боюсь, что такой функции платформы для подсчета строк (Platform.Function.rowcount) не существует.

Вам, вероятно, потребуется выполнить Rows.Retrieve и получить длину результирующего массива. Это может помочь.

0
Eliott 30 Сен 2021 в 16:30