With the help of ChatGPT, I just finished creating a Power Automate workflow for a Facilities Work order request. A user fills out the form, the row is created, and the Power Automate workflow copies the Smartsheet row AND ATTACHMENTS into a Sharepoint list.
Source Sheet:
Here's my actual Power Automate Workflow:
Since there's nothing out there yet that I could find, I'm sharing what I learned and did. I asked ChatGPT to summarize. Here's what I have included:
-
JSON you can paste into your LLM to recreate this solution, including all the knowledge that my LLM had to learn to make this all work properly. Just copy and paste the text into a new chat and it'll walk you through all the steps.
-
A word document explaining to a person how to do this.
- The below instructions are more brief but give a good overview on how to integrate them together.
All three of these combined should make it fairly easy for anyone to accomplish this integration.
Good Luck!
-Neil
<><><><><><><><><><><>
How to Integrate Smartsheet with SharePoint
This post explains a practical, reliable way to integrate Smartsheet with SharePoint so that a new Smartsheet row creates a SharePoint list item, including attachments. This approach uses Power Automate (no custom code required) and reflects real‑world constraints you’ll encounter.
What This Integration Does
- A new row is added in Smartsheet
- A corresponding item is created in a SharePoint list
- Attachments from the Smartsheet row are copied to SharePoint
- Lookup and person fields are handled correctly
- Duplicate processing is prevented
High‑Level Flow Diagram
Smartsheet: "City Hall"
|
SharePoint Lookup List
|
LookupId = 144
|
Write LookupId to List Item
Step 1: Use the Right Trigger
Use a trigger that fires only when a row is created in Smartsheet.Why:
- A row is created once
- It avoids accidental re‑processing
- It’s easier to reason about than “row updated” triggers
Important behavior to understand:
- The trigger payload is a snapshot at creation time
- Later edits to the row are not reflected in that trigger
Step 2: Extract Smartsheet Values Correctly
Smartsheet does not give you named fields.
It gives you an array of cells like this:
cells = [
{ columnId: X, value: ... },
{ columnId: Y, value: ... }
]
Correct pattern
- Match values by columnId, not by column name
- Use the columnIds from the trigger payload, not from metadata
Why this matters:
- Metadata APIs may round or format IDs differently
- The trigger payload is the runtime source of truth
Step 3: Understand SharePoint Field Obstacles (Most Important)
This is where most integrations fail.
Obstacle 1: SharePoint Lookup Fields
Examples:
- Facility
- Location
- Category
- Department
❌ What does NOT work:
- Sending text like
"City Hall" - Sending the display value from Smartsheet
✅ What DOES work:
- Query the SharePoint lookup list
- Find the matching item
- Write the numeric Lookup ID
Conceptually:
Smartsheet: "City Hall"
|
v
SharePoint Lookup List
|
v
LookupId = 144
|
v
Write LookupId to List Item
Rule to remember:
Lookup fields never accept text. They only accept IDs.
Obstacle 2: SharePoint Person / User Fields
Examples:
- Customer
- Requester
- Assigned To
❌ What does NOT work:
- Just a name
- Just an email
- A display value
✅ What DOES work:
- A Claims string in this format:
i:0#.f|membership|user@domain.com
Where:
user@domain.com comes from Smartsheet- The user must exist in the tenant
If the email is missing or blank, SharePoint will reject the request.
Step 4: Create the SharePoint Item First
Always create the SharePoint list item before handling attachments.Why:
- Attachments must be tied to an existing item
- SharePoint requires the item ID
Step 5: Copy Smartsheet Attachments
Typical attachment flow:
Smartsheet Row
|
v
List Attachments
|
v
Get Attachment Download URL
|
v
Download File Bytes
|
v
Attach File to SharePoint Item
This supports:
- Multiple attachments
- PDFs, images, documents
- One‑to‑many attachment copies
Step 6: Prevent Duplicate Processing
Add a checkbox column in Smartsheet, for example:“Sent to SharePoint”Logic:
- If checked → stop the workflow
- If unchecked → continue, then check it at the end
Why this matters:
- Protects against retries
- Protects against future trigger changes
- Makes the workflow idempotent
Important testing note:
- Re‑running “Test” in Power Automate replays old trigger data
- Real validation requires creating a new row
Common Mistakes to Avoid
- ❌ Writing lookup fields using text instead of IDs
- ❌ Writing person fields without Claims format
- ❌ Matching Smartsheet columns by name instead of columnId
- ❌ Relying on Test replay behavior
- ❌ Attaching files before the SharePoint item exists
Summary Diagram (End‑to‑End)
[ Smartsheet Row Created ]
|
v
[ Extract Values by columnId ]
|
v
[ Resolve Lookup IDs ]
[ Build Person Claims ]
|
v
[ Create SharePoint Item ]
|
v
[ Copy Attachments ]
|
v
[ Mark Row as Sent ]
Final Takeaway
Smartsheet is flexible and user‑friendly.
SharePoint is strict and schema‑driven.A successful integration:
- Treats Smartsheet as input
- Treats SharePoint as authoritative
- Translates values carefully between the two
Once you respect those differences, the integration becomes predictable and stable.
<><><><><><><><>