Node.jsでGoogleスプレッドシートを使用する方法

## 1.Googleプロジェクトを作成し、APIを有効にして、資格情報を追加する

Googleアカウントで[Google APIコンソール](https://console.cloud.google.com/)にアクセスし、「新しいプロジェクト」からプロジェクトを作成する

![5076c797591c879a3d89b5a63532ad98.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/c09e2147-728e-0075-4101-aad5918c0395.png)


プロジェクト名を入力して、作成。(場所は組織なしでOK)
![07d4607c4158213b077da2235ced94c3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/c8c85a09-29ac-a2dd-8895-6135d9bd6135.png)

[APIとサービス]からAPIとサービスの有効化を選択
![37f1217c04731689859c9afa23be3a0a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/415a9eed-f62f-e0d5-706c-3a0d4fa2e0be.png)



「Google Drive API」と「Google Sheets API」を有効化する
![6f1ec3369b7816c2170ab7dc630f373d.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/afa12f3d-1a18-e86b-20a3-48d0dfc8667d.png)
![366f24b047af275a5d7770ca7871a115.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/8c2bd133-3bf2-7c6e-75bc-9504337eb3cc.png)


認証情報を作成する
![59f7a7b6dccb4c0edcf67eacba54c5ba.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/b26a8391-eee0-1436-06f8-f0c7713afe25.png)

**入力例**
API: Google Drive API
アクセスするデータの種類: アプリケーションデータ
〜でこのAPIを使用する予定はありますか？: いいえ、使用していません

![6e30959f6d80ea3fa8f7299950493e1b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/cb4f2b26-6046-341f-0d5d-b29c04bd5ae6.png)

サービスアカウント名を入力
![8c2d8d434cad75d077d0465c86cfbde2 (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/9d297038-b9b3-6aa5-040e-348dfae70576.png)

ロールを選択
基本-->編集者
![7bc7ab6d325b4798971cb9bf8915618a.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/ef956bc3-63a1-75c3-31c1-3abf1ba44fdf.png)

鍵を追加--->新規作成
![81ac787d17519d5c41c8ee351573d8a7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/e960d069-d75e-d523-684f-15fec03af68a.png)


JSON形式で作成
![4e590bc1f5758667a6fc42f017f6ad81.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/02fba20d-9fc4-f127-84be-f72121317a63.png)


スプレッドシートでサービスアカウント(ダウンロードされたJSONの**client_email**)を共有する。


準備完了！

## 2.作成(Create)、取得(Retrieve)、更新(Update)、削除(Delete)[CRUD]

スプレッドシートを使用したいディレクトリ上で下記コマンドを実行しパッケージをインストール


```
npm i google-spreadsheet
```


下記サンプルコード


``` sample.js
(async function() {
    const {
        GoogleSpreadsheet
    } = require('google-spreadsheet');
    const creds = require('./client_secret.json'); // ダウンロードしたJSON
    const doc = new GoogleSpreadsheet('*spreadsheet ID*');

    doc.useServiceAccountAuth(creds);

    await doc.loadInfo(); 
    console.log(doc.title);
    const sheet = doc.sheetsByIndex[0];doc.sheetsByTitle[title]

    const rows = await sheet.getRows();
    console.log(rows.length);
}());
```

sample.jsの実行結果
![5f62dedf7704a5fc7c56f4fcd79a14e3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/5e0ecb04-9f0c-e84a-6f2e-5f19fc5b03f8.png)


今回使用したスプレッドシート↓
![862a19ac512e17d2326ff071595684bc.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/609664/f1832e66-9294-b34d-9053-3b8dddb86675.png)

成功！

###　参考
- [How to use Google Spreadsheets with Node.js - fastcomet](https://www.fastcomet.com/tutorials/nodejs/google-spreadsheet-package)
- [How to use the Node Package Manager - fastcomet](https://www.fastcomet.com/tutorials/nodejs/npm)
- [google-spreadsheetドキュメント - npm](https://www.npmjs.com/package/google-spreadsheet)