LoginSignup
3
4

More than 1 year has passed since last update.

LINE Bot+GAS+Google スプレッドシートで私の日々のスケジュールを管理するためのしくみをつくってみた

Last updated at Posted at 2021-05-30

作ったきっかけ

最近の会議はほぼオンラインとなり、会議室の予約も発生しないことから(会議室予約だと1日前にリマインダーがくる)、開始15分前のリマインダー通知で会議の存在を思い出すケースが多々あります(反省)。そこで、何とか改善せねば!と反省の意味もこめて、今回の仕組みを作ってみました。最終的にはGoogleスプレッドシートに反映されたスケジュールをGoogleカレンダーに反映させています。
結構たくさんの方が同じようなものをつくられているので、参考にさせていただきました。

構成

LINE+GAS+Googleスプレッドシート+Googleカレンダーの構成です。
image.png

作ったもの

LINEから「日程、開始時間、終了時間、内容」を改行して入力します。
         image.png
入力した内容がGoogleスプレッドシートに反映されます。
image.png
Googleスプレッドシートに作成されたスケジュールを今度はGoogleカレンダーに反映します。(シート内の「カレンダー連携」ボタンを押下することで、反映されます)image.png
Googleカレンダーに反映されました。
image.png

手順について

以下、作成手順を記載します。

1.Googleスプレッドシートを作成します。

①googleドライブ→新規作成→googleスプレッドシートの順番です。
image.png
②スプレッドシートURLのd/から/edieまでの間(青色四角部分)がシートIDになるのでコピーします。
image.png
③ツール→スクリプトエディタ→コード作成ページへと進みます。
image.png

2.コードを作成します。

LINEで入力したMSGをスプレッドシートへ連携するまでのコードです。

GASで作成
「var SPREADSHEET_ID =」の部分に先ほどコピーしたシートIDを貼付します。
image.png

見やすく表示します

var SPREADSHEET_ID = '1Wm7JkTpYC7LQVmJ7TttcMrfS-Rsl_********';//スプレッドシートのIDを入力する

function doPost(e) {

  // ユーザーのメッセージを取得
  var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  //LINEメッセージを「改行」で分割
  var messageParameter = userMessage.split(/\r\n|\n/);

  //対象のスプレッドシートを取得
  var targetSs = SpreadsheetApp.openById(SPREADSHEET_ID);
  //対象のシート取得
  var targetSht = targetSs.getSheetByName('シート1');
  //最終行取得
  var lastRow = targetSht.getLastRow();
  //現在年月日取得
  var date = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'yyyy年MM月dd日');

  //各セルに書き込み
  //A列に記入年月日
  targetSht.getRange('A' + (lastRow + 1)).setValue(date);
  //B列に入力した日付(メッセージの1行目)
  targetSht.getRange('B' + (lastRow + 1)).setValue(messageParameter[0]);
  //C列に開始時間(メッセージの2行目)
  targetSht.getRange('C' + (lastRow + 1)).setValue(messageParameter[1]);
  //D列に終了時間(メッセージの3行目)
  targetSht.getRange('D' + (lastRow + 1)).setValue(messageParameter[2]);
  //E列に内容(メッセージの4行目)
  targetSht.getRange('E' + (lastRow + 1)).setValue(messageParameter[3]);


  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
  }

3.アプリをデプロイします

①デプロイから新しいデプロイを選択します。
image.png
②新しくデプロイします。
image.png
③WebhookにはりつけるURLが完成です。webアプリURLをコピーしましょう!
image.png
④Webhookにはりつけます(編集→はりつけ→検証)
https://account.line.biz/login?
image.png
⑤成功がでたらOKです。
image.png

Googleカレンダーへの反映

Googleカレンダーへの反映については、以下の記事を参考にして作成しているので、コード含め詳細はこちらを参照ください。
https://www.whizz-tech.co.jp/3996/

おわりに

GASに触れることができたのは楽しかったです!ただデバッグとかなれず結構時間かかりました。簡単な方法があったら教えてください。

3
4
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
3
4