Skip to main content

Hi! I have an automation that has two find actions.

  1. Find a record (a person) on table 1 
  2. Find an interaction on table 2

 

After the two find actions have run, I have a conditional logic group in order to update the record from table 1. In the first condition, I want to check if a value from Table 2 exists on the record found on Table 1. The value is a formula field on Table 2. However, when I try to make a condition using a formula (either “Activation name” or the array version of that formula, “Activation name array,” it is greyed out and gives the error Cannot assign list of string with strings. How can I use a formula as a condition here?

 

Hi ​@laurenCTCL,

 

The issue you are seeing here is that you can’t compare 2 different types of data types in your conditional logic. The “List of Name” which is what the find block returns, is an array of names. The Activation name is probably just a string. 

 

A few solutions here:

 

  1. Add a script block after the second find block and pass the array of names as an input. Then just loop through that array and create a string that contains all of the names. Output.set a variable with the string of names and then use that in your conditional logic.
  2. Not sure what your overall automation is trying to achieve, but you could use a repeating group instead of conditional logic and that way you can compare each name from the List of names, one at a time with the Activation Name. 

Yeah I’d do a script block thing like airvues mentioned, and I think we’d have to convert the ‘Activation Name’ value to a string as well, and so it’d look like this:

And this is what the conditional would look like:

 

 

 


Thank you both! To confirm: There’s no way to change the values used in the condition to match, like by changing one of the strings to arrays or the other way around?
 

@TheTimeSavingCo I’m new to scripting- which field is the list of names pulling from in the namesToMatch input?


There’s no way to change the values used in the condition to match, like by changing one of the strings to arrays or the other way around?

Not without scripting I think

---

@TheTimeSavingCo I’m new to scripting- which field is the list of names pulling from in the namesToMatch input?

nameToMatch would be the values from Table 1 in your context I believe

---

Just realized I didn’t paste the script too, here it is sorry!

let {namesToMatch,activationName} = input.config()

output.set('namesToMatch', namesToMatch)
output.set('activationName', activationName.toString())

 


Hi ​@laurenCTCL,

I think the above mentioned solution is great.
Just adding 2cents here because I’m not 100% sure how your two tables really look like. It seems like the “List of Names” comes from a Lookup. Maybe you’d be able to use a Rollup field with the formula “Arrayjoin()”.
The result of that column would be a string instead of an array. Then you might be able to compare it.
Again, I don’t fully understand your table setup but maybe that’s an additional approach to try :)

Best,
Richard


Hi,

I think you can add this condition to the second ‘Find’.
And then in condition group check whether the lenght of 2nd Find > 0
 


Thank you everyone!

@Alexey_Gusev you’re referring to the second condition from my original screenshots, right?

 

@Richard - Simplified Webhooks good call- i’m also going to try a rollup not a lookup


Hi, ​@laurenCTCL 

Yes, I did. Sorry, but I checked it myself and it didn’t allow me to do it as well
In short, problem is that step called ‘Find RecordS” and it designed to find a group of records.
So, when you use anything from it, it expect array of values, even if you set limit of ‘Find Records’ to 1

I think, script workaround is better, but there is another workaround without scripting.
If I understood well, you are getting two record IDs, in table 1 and in table 2, inside a body of webhook.
Note that record ID is a string looking like “recXXXXX” , where XXXX are 14 radom letter or number chars. If you have other value called Record ID, like some internal ID used in primary field, it won’t work.
Then you have 2 Find Records operations, each to find a record in respective table.
You can use following trick - after Find Records step, you can Update this record, selecting any other text field, with content of Find Records step, field Values, the List of the same field. So basically you are not changing anything. But Update is action related to a single record. And then you can refer to this step (Update) instead of referring to a step with Find Records, to get a single value instead of array.
This workaround looks a bit stupid 😵, but it works. In one of my bases I have automation that puts some text value to any record and then returns old value to the same field of it, just to add this value to a Single-Select field options, because automation script can’t do it. 😀

Nevertheless, if these tables are linked to each other, I have a feeling that you are trying to do something that can be done in a more simple way. Of course, I might be wrong with that.


@laurenCTCL - report back how it goes! :)


@laurenCTCL , yes, but after I tested I’ve found that it outputs array too.

I think, script solution is better, but you can use workaround with Update record. After each Find Records put Update step (I suppose you have Record ID in your input data), choose any other text field and update with a list of values from Find, same field. The step actually will do nothing, but then you can use value from this step as a single string in further steps.