How to add images to spreadsheet cells through Google Sheets REST API

I’m working with the Google Sheets REST API and need to place images directly into cells. I know that Google Apps Script has a built-in method for this, but I’m not using Apps Script for my project.

I’ve been looking through the API documentation but can’t find any endpoints or methods that handle image insertion. Has anyone successfully implemented this feature using the REST API? I’m wondering if there’s a workaround or if I need to use a different approach.

My current setup involves making HTTP requests to the Sheets API to update cell values and formatting, but images seem to be handled differently. Any suggestions on how to accomplish this would be really helpful.

Google Sheets REST API doesn’t support inserting images directly into cells. The media handling is pretty limited.

You’d need to upload images to Google Drive first, then reference them in sheets. Even then, you’re stuck using batchUpdate with specific formatting requests - it gets messy quick.

I hit this same wall building a product catalog system a few months ago. Rather than fight the API limitations, I just automated everything.

Set up a workflow that uploads images to Drive, handles sharing permissions, formats the references, and updates cells - all in one go. No manual API calls or complex error handling.

What used to be hours of coding and debugging now runs itself. The automation takes care of Google API auth, file management, and batch operations without any hassle.

Check out Latenode for this kind of workflow automation: https://latenode.com

jst to add: u can insert images as drawings using batchUpdate, not perfect but works! just make sure u have the image URL ready since the API doesn’t let u upload files directly.

Yeah, the REST API really sucks for this - it’s one of the biggest gaps compared to Apps Script. I dealt with this same issue last year and found the IMAGE function works way better than trying to force direct insertion. Just use spreadsheets.values.update to write formulas like =IMAGE("https://your-image-url") into cells. The annoying part is getting your images hosted somewhere accessible first - I used Google Drive with the right sharing settings, then grabbed the direct URLs. You won’t get as much formatting control as native insertion, but it renders fine and updates automatically when you change the URL. Way cleaner than messing with those drawing API workarounds.