Hi everyone,
I’ve followed this excellent guide by Martin Hawksey to connect a Gemini-powered Apps Script function (jsonControlledImageExtraction) with AppSheet.
The script receives an image URL, extracts structured data using Gemini’s JSON schema, and returns a valid object. AppSheet automation is set up as:
•“Run a task” → “Call a script”
•Return type: Object
•Then → Set Values to map the output fields
✅The function runs fine, returns the expected object, and shows correct output in the logs.
❌However, the extracted values are not being written to Google Sheets.
Could it be a problem with:
•How Set Values is configured?
•Missing row context?
•Some sync issue between AppSheet and Sheets?
Would appreciate any insights or fixes — thanks in advance!
Solved! Go to Solution.
@Islom wrote:
However, the extracted values are not being written to Google Sheets.
You need to access the Monitor Logs. At the top of your Bot is a "Monitor" button. Tap that and then access the "Runs" tab. Find the Bot execution entry and check the "Process Steps" panel on the far right to see the outcome of your Bot steps. Look at the "GeminiApp" step and confirm that you are getting a returned object in the Bot itself. If you are and the JSON object looks correct then it is a matter of making sure you are accessing the returned object correctly. See article below for details on how to use returned JSON objects.
Use return values from Apps Script Task
Also be aware that if you have any requirements or validation implemented, your row WILL be subjected to those while attempting to assign the Object values. You may need to look into the Audit Logs to see any violations of those conditions.
I hope this helps!
@Islom wrote:
However, the extracted values are not being written to Google Sheets.
You need to access the Monitor Logs. At the top of your Bot is a "Monitor" button. Tap that and then access the "Runs" tab. Find the Bot execution entry and check the "Process Steps" panel on the far right to see the outcome of your Bot steps. Look at the "GeminiApp" step and confirm that you are getting a returned object in the Bot itself. If you are and the JSON object looks correct then it is a matter of making sure you are accessing the returned object correctly. See article below for details on how to use returned JSON objects.
Use return values from Apps Script Task
Also be aware that if you have any requirements or validation implemented, your row WILL be subjected to those while attempting to assign the Object values. You may need to look into the Audit Logs to see any violations of those conditions.
I hope this helps!
Thanks for the guidance!
I checked the Monitor > Runs > Process Steps as you suggested. The function does run and returns the correct values (as seen in the screenshot). However, AppSheet still throws the error:
“Failed App Script type translation: Schema has more than one column but no object was returned.”
What’s confusing is that the Cloud logs show a proper object coming back from Gemini (with product_name, product_code, etc.). But in the Monitor panel, the return value seems to be wrapped inside a structure like this:
{ "listValue": { "values": [ { "structValue": { "fields": { ... } } } ] } }
So it looks like AppSheet isn’t recognizing it as a flat object, which causes the “no object returned” error — even though it technically is.
Would appreciate any help figuring out how to make the return value AppSheet-compatible. Thanks again!
Thanks a lot for the help! 🙌 You were right — the issue was with how the object was wrapped. Once I adjusted the return structure to a flat object, AppSheet picked it up perfectly. Appreciate your guidance
User | Count |
---|---|
35 | |
9 | |
3 | |
3 | |
2 |