[GAS]LINEで送信した内容をスプレッドシートに反映させる

LINEから送信してスプレッドシートに反映させる GAS

2024/4/6 更新しました!

スポンサーリンク

背景

GASの勉強をしようと思ったが何から手をつけたら良いかわからない。
何を作ろう、、、どうせなら外部APIを使って何かしたい。
身近にあるLINEにしよう!
ということで、LINEで送信したメッセージをスプレッドシートに反映させてみます。

スプレッドシートを作成する

公式からでも、どこでも作成できるところから作成する。
スプレッドシートが表示されたら、URLの一部分をコピーして、すぐ使えるようにどこでもいいので貼り付けおく。
具体的には以下の赤字部分に該当する箇所をコピーして、メモにでも貼り付け。
https://docs.google.com/spreadsheets/d/この部分/edit#gid=0
この赤字がスプレッドシートID。

Google Apps Script

始め方は簡単で、スプレッドシートを開いたら上部の一覧に拡張機能があるので、そこからApps Scriptをクリック。

コード

下記のコードをコピーして貼り付ける。
貼り付けたら15行目あたりにある 自身のSpreadSheetIDをここに記入 を先ほどコピーした赤字部分のスプレッドシートIDに置換する。

function doPost(e) {
  // 投稿されたメッセージを取得
  var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
   
  if(userMessage.match(/^\$/)) {
    // $から始まるメッセージの場合、$を除いた文字列を再代入
    userMessage = userMessage.slice(1);
  } else {
    // $から始まらない場合は何もしない(処理終了)
    return;
  }
   
  // スプレッドシートへ保存=======================================
  var response = e.postData.getDataAsString();
  var spreadsheetId = "<自身のSpreadSheetIDをここに記入>";
  var sheetName = "シート1";
  var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  var sheet = spreadsheet.getSheetByName(sheetName);
 
  // 空白・タブ・改行で区切り配列に変換  
  var arr = userMessage.split(/\s/);
 
  // 配列の先頭に日時を代入
  arr.unshift(new Date());
 
  // セルの最下部に配列を転記
  sheet.appendRow(arr);
  // =======================================
 
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
 
}

貼り付けた後は↓こんな感じです。

デプロイ

LINEからコードを参照できるようにデプロイします。
とはいえっても、右上にデプロイとしっかり書いてくれてるので、そこをクリックして新しいデプロイを選択します。

別の小さいウィンドウが立ち上がるので、そのままデプロイをクリックします。

ウェブアプリのURLをコピーしておきます。
これで外部からコードを参照する準備が整いました。

Messaging API設定

LINE側の設定を行なっていきます。
下記リンクにログインします。

https://developers.line.biz/ja/
おそらくほとんどの方がLINEアカウントは持っていると思うので、登録方法は割愛します。
ログインできたら、少し下の方にスクロールすると、Messaging APIと書かれたカードがあるので、クリックします。

続いて、今すぐはじめようをクリック

Messaging APIの設定画面に移るので、適当に入力していきます。

今回の例では入力が必要な箇所は基本testで通しています。

全部入力したらページの一番下にある作成をクリックします。
これで基本設定は完了したので、少し前に作成したコードと紐づけていきます。
まずはMessaging API設定タブへ移動します。


少し下に行くと、Webhook URLがあるので、編集をクリック。

入力欄が現れるので、Apps Scriptのデプロイ時にコピーしたURLを貼り付けて更新をクリック。
Use webhookがActiveになっていることを確認してください。(でないと、LINEからのメッセージが送られません。)


できたら、上の方にあるQRコードを読み取って友達に追加すれば完成です!!

テスト

では実際にメッセージを送ってみましょう!

今回のコードでは先頭に$マークのついたメッセージのみをスプレッドシートに反映させるようにしていますので、
$つけたパターンとつけていないパターンで送ってみます。

この後にスプレッドシートを見てみると

しっかりと$マークが先頭についたメッセージは反映されて、ついていないものは反映されていないことがわかります!

LINEの返答メッセージやコードを修正して自分なりのフォーマットを見つけてください!

↓次の記事↓

参考:

GoogleAppsScriptの実行ログをスプレッドシートに出力する方法 | LUSKNOTE
Google Apps ScriptからSpreadSheetsに実行ログを出力する方法として、対象のスプレッドシートを開き、セルに値を格納していく方法があります。そこで本記事では、SpreadSheetsにログデータを出力するまでの手順を紹介します。| GoogleAppsScriptの実行ログをスプレッドシートに出...
LINEで投稿されたメッセージをGoogleスプレッドシートへ保存しDB化する | プログラマーになった 「中卒」 男のブログ

人気の書籍

コメント

タイトルとURLをコピーしました