スプレッドシートのコメントを取得する

仕事でスプレッドシートのコメントを一覧にまとめる必要があり、1件1件手動でやるのはあまりに効率が悪いので、なんとか自動化出来ないかとググったところ、こちらの記事に行き着きました。

[スプレッドシートのコメントを検索する方法](https://qiita.com/KazumasaIwazaki/items/8ee9a028b03162e1cf93)
> 実現方法としてスクリプトエディタでコメントを検索するコードを書くのが一番いい方法だろうと考えていました。が、調べてみると「コメント」の操作は推奨されなくなっていました。

終わった。。。
と思っていたところ、よくよく調べると、[Google Apps Script API](https://developers.google.com/apps-script/)ではダメだけど、[Google Drive API](https://developers.google.com/drive/api/v3/reference)で実現できそうなことが分かり、やってみました。

# Drive APIを有効にする
1. スクリプトエディタの リソース > Googleの拡張サービス から、 `Drive API` を有効にする<br><img width="689" alt="スクリーンショット 2018-11-29 16.42.31.png" src="https://qiita-image-store.s3.amazonaws.com/0/53215/a972efa4-bfa4-7255-89f0-10f4cbeb8ca4.png">
2. Google Cloud Platform API ダッシュボードから、 `Google Drive API` を有効にする<br><img width="727" alt="スクリーンショット 2018-11-29 16.45.36.png" src="https://qiita-image-store.s3.amazonaws.com/0/53215/912d4816-5783-1c3a-09fa-25606a4d7889.png">

# コードを書く
```js:code.gs
function myFunction() {
  var fileId = SpreadsheetApp.getActiveSpreadsheet().getId();
  var comments = Drive.Comments.list(fileId);
  
  Logger.log(JSON.stringify(comments, null , '\t'));
}
```

# 実行！
コメントの内容はもちろん、ステータスやディスカッションの内容までバッチリ取得できました！

```json
{
	"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](https://issuetracker.google.com/issues/36756650)

# 参考
- [API Reference](https://developers.google.com/drive/api/v3/reference/#Comments)
- [Google Apps Script Quickstart](https://developers.google.com/drive/api/v3/quickstart/apps-script)