GoogleAppsScript
gas
Line
linebot
LINEmessagingAPI

LINE Messaging API を Google Apps Script で利用するためのライブラリ作りました

LINE 謹製 Node.js 用 SDK と基本同一のインターフェイスをもつ LINE Messaging API を Google Apps Script で利用するためのライブラリ作りました。

依存ライブラリの設定

  1. GAS のエディタ画面のメニューの [リソース]-[ライブラリ...] をクリックしてダイアログを開きます。
  2. [ライブラリを追加] という入力欄に M9SALMELLb5j80Xc6lwp2BSX4BxE72EjN という値を入力し、 [追加] ボタンをクリックします。
  3. グリッドの [タイトル] というカラムの値が LineBotSDK というレコードが追加されるので、 [バージョン] というカラムのコンボボックスから最新のバージョンを選択し、保存ボタンを押します。

呼び出し方

function doPost(e) {
  const event = JSON.parse(e.postData.contents).events[0];
  const replyToken = event.replyToken;
  const lc = new LineBotSDK.Client({ channelAccessToken: 'アクセストークン' });
  lc.replyMessage(replyToken, [{ type: 'text', text: 'こんにちは' }]);
}

その他のメソッドの使い方は公式と同じインターフェイスにしてある(Node と GAS での若干クラスの差異がある部分(Readable -> Blob)を除く)ので Messaging APIリファレンス をご参照ください。

リッチメニューの画像を取得する getRichMenuImage の戻り値について、 GoogleAppsScript.Base.Blob 型で戻していますが、 LINE の API が Content-Typeapplication/json で返してきているため、 GAS 上では json として認識されてしまいます。戻り値に対して getAs('image/jpeg') とかやってもエラーになってしまうのでご注意ください。

また、使い勝手をよくするメソッドを若干追加しています。そちらについては README をご参照ください。

その他

TypeScript の定義ファイルを用意してあります。 line-bot-sdk-nodejs と同一のインターフェイスにしてあるので、 以下のようなパッケージをインストールすることでローカルでの開発がしやすくなるかと思います。
(逆に同じインターフェイスにするためにクラスを使った結果、 GAS のエディタでは補完が効かなくなっています…)

  • typescript
  • @line/bot-sdk
  • @types/google-apps-script

ソースコード

ソースコードは以下においてあります。

https://github.com/kobanyan/line-bot-sdk-gas

実際にデプロイされているコードは下記から参照可能です。

https://script.google.com/d/1EvYoqrPLkKgsV8FDgSjnHjW1jLp3asOSfDGEtLFO86pPSIm9PbuCQU7b/edit?usp=sharing