2

I'm having an issue, i can execute AMPscript within SSJS by placing my ampscript code within a Content Block and then using SSJS to execute it by using:

<script runat="server">
    Platform.Load("core", "1");
    var ampscript = Platform.Function.ContentBlockByID("XXXXXX");
    Write(TreatAsContent(ampscript));
</script>

Now this all works fine, the issue i have is the script failing in the automation because of the ampscript I'm using which is:

%%[

var @rows, @row, @rowCount, @counter, @Account_ID, @Equipment_Type

set @rows = DataExtensionRowCount("Accounts_with_Equipment_TEST")
set @rowCount = rowcount(@rows) 

if @rowCount > 0 then 

for @counter = 1 to @rowCount do 
set @row = row(@rows, @counter)
 
set @Account_ID = field(@row,"Account_ID")
set @Equipment_Type = field(@row,"Equipment_Type")

if @Equipment_Type == 'a' OR @Equipment_Type == 'b' THEN
set @result = UpdateSingleSalesforceObject('Account',@Account_ID,'AC_Soft__c','0')
elseif
@Equipment_Type == 'c' THEN
set @result = UpdateSingleSalesforceObject('Account',@Account_ID,'AC_Chilled__c','0')
else
endif

next
else
endif

]%%

I've tried removing pieces of code at a time and re-trying to find and pinpoint where the issue is. It looks like its to do with the below as it fails when there just the below ampscript:

var @rows, @rowCount

set @rows = DataExtensionRowCount("Accounts_with_Equipment_TEST")
set @rowCount = rowcount(@rows)

What am i doing wrong here? The DE is correct, I'm using INT to test this.

Any help would be much appreciated and thank you in advance.

1 Answer 1

4

In short: the DataExtensionRowCount() function returns a number and you are trying to pass this number to the RowCount() function which fails, because this function expects a set of rows (like it is provided by row lookup and RetrieveSalesforceObjects() functions).

If you would wrap your code in a SSJ try catch block, this error would be returned:

--- inner exception 1---

ExactTarget.OMM.FunctionExecutionException: An error occurred when attempting to evaluate a RowCount function call. See inner exception for details.
Error Code: OMM_FUNC_EXEC_ERROR
- from OMMCommon -->

--- inner exception 2---

System.ArgumentException: The type of the RowSet parameter (parameter 1) is not supported by the RowCount function.
RowSet type: Int64
Function: rowcount(@rows) - from OMMCommon

Seeing your code, it seems that the use of DataExtensionRowCount is wrong - you don't need to know how many records are there in the data extension, you need a set of data for a given account.

What you're looking for is one of those functions:

  • LookupOrderedRows
  • LookupOrderedRowsCS
  • LookupRows
  • LookupRowsCS

They will return a row set, you can process further.

1
  • Thank you for pointing out my error, i have now fixed this. Thank you again! Commented Jul 29, 2022 at 9:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .