Bots between two tables

I would like to create a bot in which when the EVENT occurs in one table, the process changes the data in a column on the other table. Is this possible?

1 Like

Should be possible, however it might be a bot where the process executes a task and that task calls an action to change the data in the other table.

Without knowing some additional details it is hard to say.

What additional details would you need

Primarily we would need to know your set up if you require assistance to figure it out. Purely from the perspective if it’s possible or not, I would say yes it’s possible. Does it require a bot? Not necessarily. You could probably get the same accomplished by using a form save event.

But in the end it will likely require an action also that gets configured within a task.

Ok I will do some more working with this and I will let you know if I come up with something. Thanks

1 Like

Hello All. I am having a similar problem. @Joseph_P_Walters_III Did you ever find a solution?

My understanding is the Bot is triggered by an Event. The Event is associated with a specific a Table. You then add a Process connected to a Task (run a task) connected to an Action (set row values). The Action is also tied to a specific Table which ties the Task and Process to the same table. It looks to me if the Task and Event are associated with different tables then you can’t attached the Process to the Event to make a bot.

That’s correct - both the process (p1) and event (e1) in the bot (b1) have to be associated to the same table (t1) . If you need to work on a different table (t2) you can achieve that by creating a process (p2) that is associated with t2. In b1 you can use a “Call Process” step to work with a row from a different table. You can either add a new row in t2 (Add option) or update an existing row in t2 (Lookup option).

2 Likes

Thank you for the clear communication. Somehow I missed the “Call Process” step type before. I have spent the morning playing around, reading forum and reading support documentation however I am having some difficulty understanding how the Process (p2 using your nomenclature) processes “Process Inputs”. e1 triggers b1 which calls p1. p1 invokes p2 via a step, “Call Process”. This step passes data into p2 via the “Process Inputs”. The Process Inputs pull from the columns of t2. I assume the Process Input formulas here are to use variables from t1. I think I understand all of that.

So the question is: How do you reference / use the Process Inputs inside p2? I have seem some posts that indicate these are held in variables named after the processes or steps however I have not had much luck with guessing the proper syntax. The Process Inputs from the step (s1) in p1 need to make it into p2, to s2 and into it’s associated action. If it helps I previously wrote actions to act one t2. When called from inside t2 they pull data from t1 and act as desired. I potentially don’t need any data to pass to p2 via the Process Inputs however directly connecting the existing and working actions to p2 did not work.

Sorry for the wall of text. I hope that by working this out here, I can be of help to those who come after me.

4 Likes

@prithpal I am also having a tough time wrapping my head around the Bot-Event-Process-Task automation. I am not sure what row I am changing using the Data actions (set and delete) when I am in b1 that is activated by e1 and running p1 and use a step that could call p2 which runs t2 which runs a2.

I am guessing it can be set by the Process Inputs with the Lookup option?

Correct any process works on a row of data in a table at any given time. Bot b1 will make a row of data available from an event e1 to a process p1. All steps & tasks in p1 have access to that row of data. A call process step can all another process p2. In doing so either it looks up a record that it passes to p2 or adds a record that it passes to p2. All steps in p2 have access to that row of data. Hope this helps.

1 Like

Thank you @prithpal. Is there any documentation that goes over the syntax as to how this data is passed? Lets assume that all tables, bots, process, tasks are named after our assumed naming convention with the added convention of t1c1, t1c2, t1c3 and so on for each column of a table. Lets further set c1 as the key and c2 as the label for any given table.

Our goal is to get data from a new entry in t1 to t2, I will assume a data type of “number” for c3. e1 triggers with a new data entry to t1. e1 triggers b1 calls p1 calls s1 calls p2 calls s2 calls t2 calls a2. The setup is as follows:

I have set t1c2 to pull from all values of t2c1 via data validity.

You will note I set a constant in the equation field of a2. With this setup I am able to run the b1 bot successfully and understand what is happening. Adding a new row in t1 will set the t2 row that has the key that matches t1c2’s value to 15.

The big question is: What syntax do I use to set t2c3 to t1c3 via e1?

At the risk or over complicating this post and diverting from the question above. Can b1 only enact changes on the t2 row that matches the t2 key passed from s1 into p2 (t1c2)?

Thank you.

@Zhifeng_Lin FYI

1 Like

from s1 (while you still have access to the row from t1), you can click “add” to pass in values for t2c3

t2c3 = [t1c3]

@Zhifeng_Lin Thank you

I have changed s1 from “lookup” to “add” per your instruction.

How is this used in a2 to actually set the value of t2c3 using t1c3? I can’t seem to reference p1, s1, p2, or s2 from inside a2. I can reference t1 but it defeats the entire point of passing a single value in via s1 and would require some filtering it find the correct row.

1 Like

Hi,
I meant hitting the “Add” button below in the “Process Inputs” and then do
“t2c3 = [t1c3]”

and then in p2.s2, you should make some change to not always overwrite with “15” for that column.

@Zhifeng_Lin Please correct me if I am wrong but s1 already has "t2c3 = [t1c3]” as a Process Input.

I know I need to change a2 from “15” to something but the questions is to what? I had “15” as a placeholder to test everything else. How do I call the Process Input from s1?

Hi Mark,

Sorry I did not realize you are already passing in [t1c3] to t2c3

Assuming [t1c3] is equal to “23”, basically now [t2c3] has the same value of “23” as well when p2 is being called. In fact, [t2c3] has been updated to “23” in t2 for that row too.
So now in p2, you can use [t2c3] to compute.

Hope that makes sense.

Thanks!

1 Like

@Zhifeng_Lin Thank you.

To add some clarity for people who find this in the future. Here is what I did.

I have no idea exactly what is going on here but I am going to make some random statements. AppSheet can correct me if they would like. I tried both “Add” and “Lookup” in s1. They both work however “Add” seems to require you to have inputs for all column data (even though some of it may not be used). The Process Inputs seem to be their own variables that can be named the same as any other variable but are not actually the same variable. The key Process Input variable (t2c1 = [t1c2] here) is being used to identify which row of t2 the process p2 acts on. Additional Process Inputs seems to be placed in a temporary variable that happens to have the same name as the columns in the table that is being acted on.

In the end we got there. Thanks.

2 Likes