【GAS】LINE Messaging APIでメッセージを取得

LINE Messaging API メッセージ取得 API

こんにちは!

おでぃーです。

今回は、LINE Messaging APIを使って、トークのメッセージをリアルタイムで取得してみます。

取得したメッセージは、

  • スプレッドシート等に出力して管理する
  • 他のチャットツールやSNSに投稿する
  • メッセージの文字列を読み取って自動返信する

などいろいろな用途で自動化に繋ぐことができます!

そのために、まずは基本となるメッセージ取得についてマスターしちゃいましょう。

この記事を書いた人
おでぃー

GASを使った業務自動化に関するテクニックを発信。
本業ではプロダクト開発でエンジニアのディレクションをしながら、副業にてブログ運営やツール・スキルの販売を実施。
ネット広告運用経験からSNS領域の自動化に注力。

おでぃーをフォローする

LINE Developer登録&アクセストークン取得

まずはLINE Messaging APIが使えるように、LINE Developerに登録し、アクセストークンを取得します。

こちらの記事にて詳しく解説していますので、参考にしてください。

公式アカウントを友達追加

メッセージを取得したり送信したりしてくれる公式アカウント(bot)を友達追加します。

LINE Developerの上部メニューから「Messaging API設定」を選択。

するとすぐ下にQRコードが表示されるので、それを読み取って友達追加することができます。

グループへの参加を許可

追加した公式アカウントをグループへ参加させたい場合は、QRコードのページでさらに下にスクロールすると、「LINE公式アカウント機能」という項目があります。

そのうち、「グループトーク・複数人トークへの参加を許可する」を「編集」から有効にします。

これで、公式アカウントをグループに追加することができます。

GAS設定

今回は例として、

「LINEから取得したメッセージをリアルタイムでスプレッドシートのA1セルに出力する」

というプログラムを組んでみます。

プロジェクト作成

GASでは、まずプロジェクトの作成をします。

詳しくは下記の記事の解説しているので参考にしてみてください。

スクリプト作成

スクリプトファイルを1つ作成し、下記のソースコードをコピペします。

function doPost(e) {
  var spreadsheetId = 'スプレッドシートIDを入力'
  var spreadsheet = SpreadsheetApp.openById(spreadsheetId);
  var sheet = spreadsheet.getSheetByName('シート1');
 
  var lineToken = 'LINEアクセストークンを入力'
  
  //メッセージを取得
  var eventData = JSON.parse(e.postData.contents).events[0];
  var userMessage = eventData.message.text;

  //A1セルにメッセージを出力
  sheet.getRange('A1').setValue(userMessage);
}

2行目と6行目には、それぞれスプレッドシートIDと取得したLINEアクセストークンを入力します。

「A1セルにメッセージを出力」という処理を含ませている理由ですが、doPost関数は実行履歴の中身が残らないため、Logger.log等で確認することができません。

そのため、スプレッドシート上に出力させる処理をいれることで取得できているかを確認できるようにしてあります。

A1セルである必要はないので、必要であればご自身の好きなようにカスタマイズしてみてください。

デプロイ

GASエディタ右上の「デプロイ」→「新しいデプロイ」

種類:「ウェブアプリ」、次のユーザーとして実行:「自分」、アクセスできるユーザー:「全員」にそれぞれ設定し、「デプロイ」を選択します。

すると、ウェブアプリのURLが作成されるので、コピーして取得します。

Webhook URL設定

再度LINE Developerに戻り、QRコードの少し下を見るとWebhook設定の項目があります。

「編集」から、先ほどコピーしたウェブアプリURLを貼り付けて設定します。

スクリプト実行

プログラムを機能させるには、初回の実行で権限を許可する必要があります。

下記の記事を参考に、doPost関数を実行します。

その際、権限の許可ができていれば、実行結果がエラーになっていても問題ありません。

LINEメッセージを処理に用いるため、メッセージが存在しないとエラーになります。

テスト

以上で設定は完了です。

LINEで公式アカウントに直接、もしくは招待したグループにメッセージを送信してみましょう。

スプレッドシートのA1セルにそのメッセージが出力されていれば成功です!

コメント