仕事でスプレッドシートのコメントを一覧にまとめる必要があり、1件1件手動でやるのはあまりに効率が悪いので、なんとか自動化出来ないかとググったところ、こちらの記事に行き着きました。
実現方法としてスクリプトエディタでコメントを検索するコードを書くのが一番いい方法だろうと考えていました。が、調べてみると「コメント」の操作は推奨されなくなっていました。
終わった。。。
と思っていたところ、よくよく調べると、Google Apps Script APIではダメだけど、Google Drive APIで実現できそうなことが分かり、やってみました。
Drive APIを有効にする
- スクリプトエディタの リソース > Googleの拡張サービス から、
Drive API
を有効にする
- Google Cloud Platform API ダッシュボードから、
Google Drive API
を有効にする
コードを書く
code.gs
function myFunction() {
var fileId = SpreadsheetApp.getActiveSpreadsheet().getId();
var comments = Drive.Comments.list(fileId);
Logger.log(JSON.stringify(comments, null , '\t'));
}
実行!
コメントの内容はもちろん、ステータスやディスカッションの内容までバッチリ取得できました!
{
"kind": "drive#commentList",
"selfLink": "https://www.googleapis.com/drive/v2/files/XXXXX/comments?alt=json",
"items": [
{
"content": "test comment @ B1",
"htmlContent": "test comment @ B1",
"fileTitle": "スプレッドシートのコメントを取得する",
"kind": "drive#comment",
"author": {
"kind": "drive#user",
"displayName": "Andysumi",
},
"isAuthenticatedUser": true
},
"createdDate": "2018-11-29T06:58:05.927Z",
"deleted": false,
"replies": [
{
"replyId": "XXXXX",
"kind": "drive#commentReply",
"author": {
"kind": "drive#user",
"displayName": "Andysumi",
},
"isAuthenticatedUser": true
},
"verb": "resolve",
"createdDate": "2018-11-29T07:51:18.378Z",
"deleted": false,
"modifiedDate": "2018-11-29T07:51:18.378Z"
}
],
"anchor": "{\"type\":\"workbook-range\",\"uid\":0,\"range\":\"1209420030\"}",
"modifiedDate": "2018-11-29T07:51:18.378Z",
"commentId": "XXXXX",
"status": "resolved",
"fileId": "XXXXX"
},
{
"content": "test comment @ A1",
"htmlContent": "test comment @ A1",
"fileTitle": "スプレッドシートのコメントを取得する",
"kind": "drive#comment",
"author": {
"kind": "drive#user",
"displayName": "Andysumi",
},
"isAuthenticatedUser": true
},
"createdDate": "2018-11-29T05:40:55.768Z",
"deleted": false,
"replies": [
{
"content": "reply comment",
"htmlContent": "reply comment",
"replyId": "XXXXX",
"kind": "drive#commentReply",
"author": {
"kind": "drive#user",
"displayName": "Andysumi",
},
"isAuthenticatedUser": true
},
"createdDate": "2018-11-29T06:57:47.196Z",
"deleted": false,
"modifiedDate": "2018-11-29T07:50:56.501Z"
}
],
"anchor": "{\"type\":\"workbook-range\",\"uid\":0,\"range\":\"396321758\"}",
"modifiedDate": "2018-11-29T07:50:56.501Z",
"commentId": "XXXXX",
"status": "open",
"fileId": "XXXXX"
}
]
}
最後に
当初はGoogle Apps Script API使っての自動化を考えていましたが、手段は違えど、要件はみたせそうなので、良かったです!
Google Apps Script APIでサクッと取得できるといいのですが、当分実現しそうにないですね。。。
Provide read/write access to comments in Google Sheets