LINE Developers Communityのイベントに参加し、GASでLINEBotを作ったところ、
環境面でつまづくことが少なかったことから記事としてまとめてみました。
成果物
ドクターイエローとは新幹線の高速運転を支える様々な設備の状況を走りながら測定する車両で、「新幹線のお医者さん」と言われています。
また、めったに見れないことから見ると幸せになれると言われています。
このBotではドクターイエローの運行予定日には運行予定を案内したり、運行予定日のカレンダーを見ることができます。
鉄道好きな人やパパママさんには是非使っていただきたいです。
アジェンダ
GASを進める理由
GoogleAppsScript(GAS)はLINEBotの開発をするのにとても便利なプラットフォームなんです。
LINEBotを作る上で環境面においてトラブルなく利用できているので重宝しています。
理由は下記の通り。
- デプロイがシンプル
- 認証方法を3つ選べる
- 指定したサイクルで自動実行できる
- 機密情報をプロパティで管理できる
- JavaScript/TypeScriptで実装できる
リリース方法がシンプル
GASの画面からポチポチするだけで、即時にリリースできます。
手順は3つ、これだけ。
- デプロイ→デプロイを管理
- 編集
- 下記の内容でデプロイ
- バージョン=新しいバージョン
- 説明=リリース内容(任意)
- 次のユーザーとして実行=自分。(初回指定)
- アクセスできるユーザー=LINEBotのwebhook用なら全員(初回指定)
認証方法を3つ選べる
認証の仕組みは本当に難しいので、なるべく触れたくない。
GAS側で選択できるのは大変ありがたい。
アクセス範囲を絞ることはセキュリティ対策として有効。
選択肢 | スコープ | 内容 |
---|---|---|
自分のみ | private | いわずもがな |
ドメイン(会社名)の全員 | protected | 同じ会社内の人ならアクセスできる。 会社用など特定のGoogleアカウントのみ表示される。 |
Googleアカウントを持つ全員 | internal | Googleアカウントを持つ人がログインすれば使用できる。 |
全員 | public | いわずもがな |
指定したサイクルで自動実行できる
webアプリだけでなくバッチ処理としても利用できます。
ドクターイエロ-の運行案内では毎日実行する設定にして、
スプレットシート内の運行予定日と一致したらBotからメッセージを送信するようにしています。
- トリガー→トリガーの追加
- 実行する関数を選択
- 実行するデプロイを選択→デプロイで指定したバージョンのこと。HEAD=最新
- イベントのソースを選択→時間主導型
- 時間ベースのトリガーのタイプを選択
- 選択値によって実行するサイクルを指定する
エラー通知は選択式ですが、+で通知タイミングが追加できます。
機密情報をプロパティで管理できる
なんかのキーやトークンなど、アプリ固有の機密情報をどこにどう格納してどこから取得するか、
安全かつシンプルに検討する必要があります。
GASにはプロジェクトのプロパティがあり、ここでKey/Valueペアの値を管理することができます。
プロジェクトのプロパティを表示するにはクラシックエディタへの切り替えが必要です。
- GASでエディタを開く
- クラシックエディタを使用する
- ファイルメニュー>プロジェクトのプロパティ
-
スクリプトのプロパティタブ
を選択
プロジェクトのプロパティに登録した値はPropertiesService.getScriptProperties().getProperty(プロパティ名)
で取得できます。
コードを書く必要はありますが、↓のコードで使い回しが可能です。
function GetSystemProperty(key) {
const value = PropertiesService.getScriptProperties().getProperty(key);
if (value === null) {
console.error(`key[${key}]がプロパティに存在しません。`);
}
return value;
}
JavaScript/TypeScriptで実装できる
この章はコードを書きたいエンジニア向けになります。
GASを実装するにはGASのエディタで直接コーディングすることになります。
GASのソースの拡張子は.gas
ですが、中身はJavaScriptです。
だったらJavaScriptでできるやん!を叶えてくれるライブラリがgoogleから提供されています。
下記のライブラリを入れたら、VSCodeで開発できるし、Githubでも管理できるようになりますね。
clasp
GASへのデプロイやプロジェクトのクローンなどをコマンドで操作できるライブラリです。
clasp push
でjsファイルからgasファイルに変換されてGASにデプロイしてくれます。
使用するにはGASプロジェクトにてGoogle Apps Script API
を有効にする必要があります。
有効にするにはApps Scriptコンソールの設定から変更できます。
google-apps-script
スプレッドシート等のライブラリを含んだ、GASを開発するためのライブラリです。
まとめ
LINEBotの開発においてGASを進める理由は下記の通りです。
引用