Edited at

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