Can Workflow be configured so it will update the cell it created previously?
I have over a hundred employees that have their own sheet (Training records). If I also have a master training sheet that lists the systems they are to be trained on. 3 of the columns in the master are linked to 3 columns in the individual training records, this is if I have to update one of the systems it will update across all 100 employees. That part is working fine however I attempted to create a workflow to add a new row if we add a system. this works to add, but if I have to update that system it will only create a new "Copy" of that row to each sheet and I end up with 2 rows for that system. Is there a way to have workflow either insert a link to the master sheet when I create it or can workflow be set up to edit the text in another sheet without creating a new row? maybe I'm looking at this wrong. any help to be able to create a row that will be linked to the master other than spending hours doing it manually for over 100 sheets.
Answers
-
Hi @ckaley
Unfortunately, Smartsheet workflow automation does not support updating the cell created previously (by copy rows automation.)
My solution is to add helper columns to identify non-current rows and use a report to show only the current rows.
Here is my understanding of your situation.
As shown below, System A's Due Date has been changed.
Then, workflow automation copies the changed row to individual training sheets. (I tested with three training sheets, Training Sheets #1 to #3, and the workflow worked as expected.
As shown below, the workflow copies rows as the values change. For example, the 6th row has been copied to Training Sheet #1, as the Due Date changed from 07/10/25 to 04/04/25. (I changed the Training Level from Beginner to Intermediate, so a new row was copied to the 7th row.)
I added helper columns, Created and Old to identify the non-current rows.
[Old]=IF(AND(COUNTIF([System Name]:[System Name], [System Name]@row) > 1, MAX(COLLECT(Created:Created, [System Name]:[System Name], [System Name]@row)) <> Created@row), 1)
Then, I created a report with all the individual sheets filtered by Old. (Un-checked)
Then, I shared the report with the individual trainee.
As I assume the individual training sheet is shared only with a trainee, the trainee only sees his/her sheet's information, as shown below.
Unfortunately, you must add those two helper columns to your 100 sheets. As I tested, adding a Created system column, the Old checkbox column, and the column formula takes 10 to 20 seconds. So, adding those rows to all the sheets will take 20 to 30 minutes.
Limitation
This solution has limitations. The information an individual trainee inputs into his/her sheet will not be carried over to the updated training information row. (Trainee Input Data, it the image below)
So, the second solution has a [Status] column instead.
[Status]=IF(COUNTIF([System Name]:[System Name], [System Name]@row) = 1, "No Update", IF(AND(COUNTIF([System Name]:[System Name], [System Name]@row) > 1, MIN(COLLECT(Created:Created, [System Name]:[System Name], [System Name]@row)) = Created@row), "Original", IF(AND(COUNTIF([System Name]:[System Name], [System Name]@row) > 1, MAX(COLLECT(Created:Created, [System Name]:[System Name], [System Name]@row)) = Created@row), "Latest")))
Then, I applied conditional formatting to the Status=Original row to gray out the old training information.
I applied a filter for the report to show only the latest and original and no updated rows. As the sheet's formats are carried over to the report, the report hides the old training information of the original row, where trainee inputs are made.
Other solutions
I considered Data Shuttle and Data Mesh solutions, but since those apps' workflow or configurations allow only one target sheet per workflow or configuration, I consider them impractical.
Another solution is to create cell links from the master sheet to the individual sheets. All future changes will be reflected in the linked sheets with the cell link. However, if you add a new System, such as System G, H, etc., you must create new cell links 100 times, so I also consider this impractical.
-
Thank you, I've tried some some of your ideas already. It would be nice if a workflow existed to copy a row and link specific columns automatically. of course it would also be helpful is workflow added the rows in the same row number that I added them on the master.
The solution that I am working with now is to link extra rows at the bottom of each sheet. I already have to go in to each sheet with workflow to move the copied row into the correct row number so this is no different and the cells I need linked already contain the link. Its not the most automated and professional method but it was the easiest work around I could come up with to keep each training record the same.
Thanks again for the help and advice, this might come in handy on a future project.
-
You're right—it would be great if Smartsheet had a built-in way to copy rows while keeping them linked dynamically. Add cell-link automation would be nice. Your workaround of linking extra rows and manually adjusting them is a practical approach, given the current limitations, and I admire your resourcefulness in keeping each training record aligned.
Optimizing the Process with Smartsheet API and Bridge
If you're open to API automation, a more scalable solution would be using the Smartsheet API or Bridge by Smartsheet. This approach would eliminate manual intervention and ensure updates are accurately reflected across all 100 sheets.
How the Smartsheet API Can Automate the Process
- Set Up a Webhook on the Master Sheet
- Configure a webhook to listen for changes in key columns (e.g., System Name, Due Date, Training Level).
- The webhook triggers an API function to process updates when a change is detected.
- Identify the Change Type (New vs. Update)
- Retrieve the modified row from the master sheet.
- Determine if it's a new system (which needs to be added to all training sheets) or an update (which requires modifying existing rows).
- Fetch the 100 Training Sheets Dynamically
- Use the API to get all sheets within a designated workspace or folder.
- Filter sheets using a naming pattern (e.g., Training Sheet for [Employee Name]) to ensure correct mapping.
- Perform the Appropriate Action: Add or Update
- If adding a new system, use
add_rows(sheet_id, row_data)
to insert the row into all 100 sheets. - If updating an existing system, locate the matching row in each sheet:
- Use a Unique ID (if available) or System Name as a matching key.
- Use
update_rows(sheet_id, row_data)
to modify the row without duplicating it.
- If adding a new system, use
- Error Handling & Logging
- Implement logging to track failed updates or missing rows.
- Add retries in case of API rate limits or temporary issues.
Bridge by Smartsheet: Enhancing API Automation
Bridge can simplify the triggering mechanism, allowing you to execute API calls without needing a separate server. Here's how:
- Trigger a workflow when a row changes in the master sheet.
- Use conditions to determine if a row should be added or updated.
- Call Smartsheet API or trigger a child workflow, giving the parameters:
- Type of change (add/update)
- Sheet ID (of the target training sheet)
- Values (data to be inserted or updated)
This integration allows for a low-code automation approach, making it easier to maintain without deep programming expertise.
- Set Up a Webhook on the Master Sheet
Categories
- All Categories
- 14 Welcome to the Community
- Customer Resources
- 65.8K Get Help
- 429 Global Discussions
- 146 Industry Talk
- 485 Announcements
- 5.1K Ideas & Feature Requests
- 87 Brandfolder
- 151 Just for fun
- 73 Community Job Board
- 496 Show & Tell
- 33 Member Spotlight
- 2 SmartStories
- 306 Events
- 37 Webinars
- 7.3K Forum Archives