【LINE BOT】イベントの事務処理作業をLINE Botで便利にしていく【GAS】

はじめに

こんにちは、がんがんです。
前回、GASを用いたLINE BOTの作成を行いました。
gangannikki.hatenadiary.jp

今回はGoogleスプレッドシートと連携してイベント事務処理Botを完成させていきます。

追記【2019.04.29】

GitHubのリンクを追加しました。
github.com

最終目的

  • LINE Botを作成し、イベント主催者のほしい情報を渡す

今回試したこと

STEP1 Googleスプレッドシートからデータを取得する

まずはこちらの記事で遊んだ要領でGoogleスプレッドシートからデータを取得します。
リストは実験用を用意しました。なので中身は特に関係ないです。NEW GAME!!よかった…
f:id:gangannikki:20190413005822p:plain

コード

コードは以下のとおりです。
別のリストも基本的に同じコードです。

//  2on2のリストを取得
function getsheet2on2(){
  var spreadsheet = SpreadsheetApp.openById(spreadsheet_id);
  var sheet = spreadsheet.getSheets()[3];  //  2on2のリストを取得
  var values = sheet.getRange("A:D").getDisplayValues();
  var range = sheet.getRange("B:B").getValues();  //  Stringのある範囲を指定
  var LastRow = range.filter(String).length;
  var body = "";
  for (var i = 1; i < LastRow; i++){
    body += values[i][0] + "." + values[i][1] + "(" + values[i][2] + "/" + values[i][3] + ")\n";
  }
  Logger.log(body);
  return body;
}

今回はvaluesで必要情報を出力し、rangeで行数を指定しています。
理由としては、全範囲にしてしまうとNo列をLastRowとしてしまうためこのようにしています。

実行結果

出力結果としてしっかりログに出ています。
f:id:gangannikki:20190413010329p:plain

STEP2 LINE Botのコマンドに合わせて、シートの内容を出力する

次にこちらの記事を応用してLINE Botを完成させていきます。
LINEから送られてきたコマンドに合わせて呼ぶスプレッドシートを変更させるだけなので、あまり難しくはないです。

今回はとりあえずリスト1でソロのリスト、リスト2で2on2のリストを呼ぶようにしてます。

  var replyMessage = "";
  switch(userMessage){
    case "ちす":  //  遊びコマンドです
      replyMessage += userMessage + userMessage + "です";
      break;
    case "リスト2":
      replyMessage = getsheet2on2();
      break;
    case "リスト1":
      replyMessage = getsheetsolo();
      break;
    default:
      replyMessage += userMessage;
      break;
  }

実行結果

実行結果はこのような感じです。しっかりとリストを返してくれています。
f:id:gangannikki:20190414234603j:plain

はまったこと

今回苦戦したところはjavascriptの文字列と配列のところです。
Googleスプレッドシートからリストを呼び出してLogへ出力したり、オウム返しのLINE Botは上手く行ったのになぜか繋げると上手く行かなかったです。
配列を文字列に変えると上手く行きました。
これを解決するのに2日くらいずっと考えたので、解決したときはかなり嬉しかったです。

全体のコード

まとめ

今回はイベント事務処理用のLINE Botを完成させました。
GASを用いたGoogleスプレッドシートの処理、GASを用いたLINE Botの処理について学習することが出来たのは収穫です。
次はLINEのリッチメニューを追加したり、実際に使ってもらったときのフィードバックを元に改良していきます。

また、LINE Botは作るのが結構簡単だったし、自分の生活向上用Botとかいろいろ活用範囲は広がりそうと思いました。
次はゴミ捨てのリマインダやToDo管理のできるBotを作って遊びます。