0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

GoogleSheet APIで読み込み、書き込みをしてみるよ。

Last updated at Posted at 2020-07-24

こんばんは:relaxed: 
全然関係ないんだけれど、普段vimで作業していると、QiitaとかGoogleAppsScriptとかWebとかでもついつい:w連打しちゃうよね。
これってあるあるなのかな?:relaxed:

これまではGoogleChatのAPIをお試ししてきたね。
今まではちょこちょこお試しだったけれど、実際に使えるBOTにしていくよ。
作りたいBOTはこんな感じだよ。

ink.png

ねこちゃんやわんちゃんやうさちゃんからHelpのDMがきたら、:relaxed:のいるチャットルームにスレッド分けされた状態で転送されて、
そのスレッドに返事をしたら、BOTからねこちゃんやわんちゃんやうさちゃんに返事をしてくれるようにしたいよ。
有り体にいっちゃうと問い合わせ受付してくれるBOTだね。

ステップとしてはこんな感じかな。
1.BOTにDMを送ったら、チャットルームへの転送がされる。 (
2.チャットルーム内でのユーザーごとのthread名を保持し、同じユーザーからのDMは同じスレッドに書き込まれる。
3.スレッドに:relaxed:から書き込みをしたら、対象のユーザーにDMが送られる。
4.(余力があれば)よくある質問集みたいな一覧を作ってBotが自動返答してくれる。

今日からは、**2.チャットルーム内でのユーザーごとのthread名を保持し、同じユーザーからのDMは同じスレッドに書き込まれる。 **をすすめていくよ。

GoogleSheetAPIのクイックスタートを動かしてみよう。

スレッド分けに必要な情報をGoogleSheetで管理することにするよ。
そのためには、GoogleSheeaAPIに詳しくならないといけないね。

まずはいつも通り公式のテンプレートを使って、APIを使えるところまでやってみよう。

Google Sheet API
https://developers.google.com/sheets/api

この中の、GoogleAppsScriptバージョンのクイックスタートを動かしてみるよ。
ほぼほぼ公式の通りなので、詳細は書かないけれど、:relaxed:が引っかかったところだけお伝えするね。

Step 1: Create the script
権限の関係なのか、用意されているSheetを参照することができなかったよ。マイドライブ内にコピーを作成し、指定しているspreadsheetIdを変更したよ。

Step 2: Turn on the Google Sheets API
特に問題なかったよ。

Step 3: Run the sample
実行したら「ReferenceError: 「Sheets」が定義されていません。 at logNamesAndMajors(コード:165)」というエラーが発生したよ。
公式のトラブルシューティングにも書いてあったけれど、GoogleAppsScript内でSheetを有効にしなければならないらしいよ。

該当scriptのリソース>Googleの拡張サービス..をクリック。
スクリーンショット 2020-07-24 10.29.39.png

GoogleSheetAPIをONして、OK。
スクリーンショット 2020-07-24 10.29.56.png

で解消したよ。

で、どーん。ばっちりデータをとってきたよ!簡単だね!
スクリーンショット 2020-07-24 10.32.08.png

ソースをみてみると、

var values = Sheets.Spreadsheets.Values.get(spreadsheetId, rangeName).values;  

の形式で、特定のスプレッドシートの特定の行の値をとってきているのがわかるね。

値の書き込みをしてみよう。

読み込みができたから、次は書き込みをしてみたいね。
ここを参考にするよ。

Appending values
https://developers.google.com/sheets/api/guides/values#appending_values

function insertDateToSheet() {

  //挿入したいデータを書くよ。
  var values = [
    ["relaxed:)", "Male", "1. Freshman", "CA","Art","Track & Field"]
  ];
 
  // XXXXXXには書き込みたいスプレッドシートのIDをいれてね。URLのおしりだよ。
  var spreadsheetId = 'XXXXXXXX';

  var valueRange = Sheets.newRowData();
  valueRange.values = values;

  var appendRequest = Sheets.newAppendCellsRequest();
  appendRequest.sheetId = spreadsheetId;
  appendRequest.rows = [valueRange];

  //新しい行を挿入したいシートの名前を設定するよ。  
  var range = 'test';

  var result = Sheets.Spreadsheets.Values.append(valueRange, spreadsheetId,range , {
    // ROW か USER_ENTEREDをセットするよ。 ROWだとValuesの値がそのまま、
USER_ENTEREDだと数式は数式として実行されるよ。
    //Valuesで["Totals", "=SUM(B2:B4)", "=SUM(C2:C4)", "=MAX(D2:D4)"]とかセットしたい場合は、USER_ENTEREDにするよ。
    valueInputOption: "ROW"
  });
}

これを実行するよ、はいどーん。

スクリーンショット 2020-07-24 19.56.41.png

追加されたね!

今日はここまで!
次回ははChatAPIと連携させて、Messageの情報をスプレッドシートで管理するようにするよ:relaxed:

## 参考にさせていただいたもの
Google Sheet API

:relaxed: は公式とサンプルコードが大好きだからね。ありがとう。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?