Pulling Google Doc comments in Claude is not worth the effort
A failed experiment
The goal
I want to give Claude a link to a Google doc and have it return a clean list of every comment, who wrote it, any replies, and the exact sentence in the document it refers to. Then Claude and I could work through the feedback together.
Basically, doing this is a pain that involves using Google Cloud, so is not worth the time for most people. Figuring this out was frustrating enough that I thought I’d write it down. That way, other people don’t waste the same time.
The native connector doesn’t work
Claude’s native Google Drive connector can pull the comments. It returns every comment, the author, the replies and the open/resolved status, all correct.
Separately, it can also pull the document text with the commented ranges marked up inside it.
What’s bullshit is that it can’t combine them! It can’t tell you which comment goes with which piece of text. The comments come back tagged with one kind of ID. The highlighted ranges in the document come back tagged with a completely different kind of ID. Nothing in the response links the two.
The dangerous thing is that when I first asked Claude to match them, it did: by guessing which comment went with which sentence. So obivously it got a bunch wrong, and then didn’t tell me in classic LLM fashion.
The raw API works but isn’t worth it
Connectors are just AI-friendly packages that contain API code. If a connector doesn’t work, the next best thing to try is using the API directly, having AI write all the code for you.
Google’s Drive API can give us what we want. It has a field on the comments resource called quotedFileContent, and its value is literally the text the comment refers to. So the correct way to do it is a single call. You run comments.list on the file, ask for quotedFileContent, content, author and replies in the fields, and every comment comes back already paired with the sentence it’s anchored to. No guessing. No parsing. No reconstruction (Manage comments and replies, Google; comments REST reference). Someone on Google’s own forum asked for this precise thing, the comments plus the highlighted paragraph, and that field is the answer (Google Docs community thread).
So the obvious fix is to skip the connector and talk to that API directly. Have Claude write a small Python script that calls comments.list with the right fields, then run it.
The problem is authentication. To use the API, the script has to use your Google account credentials. To make that possible, you go into the Google Cloud Console, create a project, switch on the Drive API, build an OAuth “desktop app” credential, and download a credentials.json file to sit next to the script. That’s just long enough for most people to say “fuck this”. But I’ve done this type of thing before. I hate Google’s Cloud Console but I’ll go there if I have to.
But it gets worse. if you go 7 days without using it....the token expires and you have to do it all over again (Google OAuth token expiration behaviour).
Google could probably fix this easily
Clever readers will be wonder: “If the Connector is just using the API, and the API has the answer we need, why can’t the connector call the right bit of the API?”
Because Google built the connector to not have access to the thing we need! The connector’s read call strips out the quotedFileContent field, which is the one field that would have solved this.
None of this is hard for Google. It’s one field. If Claude’s Google Drive connector either exposed quotedFileContent in its comment output, or preserved the link between comment IDs and the highlighted ranges it already returns, the whole problem disappears.
Summary
Basically, the connector can’t do it, the API can but you have to do a bunch of shit in Googles Cloud Concole and if you don’t use it every 7 days you have to go configure it again.
Can someone figure out a solution for this?




Download the Google doc to Microsoft word format (.docx) -> upload to Claude. Works well enough for me!
At least for the 7 day issue - what about creating a scheduled script to just go through an empty / puppet document every 5 days or so just for restarting the count?