33
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

LINEBotを作るのにGASが便利な5つの理由

Last updated at Posted at 2022-02-19

LINE Developers Communityのイベントに参加し、GASでLINEBotを作ったところ、
環境面でつまづくことが少なかったことから記事としてまとめてみました。

成果物

LINEBotドクターイエロー運行案内
image.png

ドクターイエローとは新幹線の高速運転を支える様々な設備の状況を走りながら測定する車両で、「新幹線のお医者さん」と言われています。
また、めったに見れないことから見ると幸せになれると言われています。
このBotではドクターイエローの運行予定日には運行予定を案内したり、運行予定日のカレンダーを見ることができます。
鉄道好きな人やパパママさんには是非使っていただきたいです。

アジェンダ

  1. GASを進める理由
    1. リリース方法がシンプル
    2. 認証方法を3つ選べる
    3. 指定したサイクルで自動実行できる
    4. 機密情報をプロパティで管理できる
    5. JavaScript/TypeScriptで実装できる
  2. まとめ

GASを進める理由

GoogleAppsScript(GAS)はLINEBotの開発をするのにとても便利なプラットフォームなんです。
LINEBotを作る上で環境面においてトラブルなく利用できているので重宝しています。
理由は下記の通り。

  1. デプロイがシンプル
  2. 認証方法を3つ選べる
  3. 指定したサイクルで自動実行できる
  4. 機密情報をプロパティで管理できる
  5. JavaScript/TypeScriptで実装できる

リリース方法がシンプル

GASの画面からポチポチするだけで、即時にリリースできます。
手順は3つ、これだけ。

  1. デプロイ→デプロイを管理
  2. 編集
  3. 下記の内容でデプロイ
    1. バージョン=新しいバージョン
    2. 説明=リリース内容(任意)
    3. 次のユーザーとして実行=自分。(初回指定)
    4. アクセスできるユーザー=LINEBotのwebhook用なら全員(初回指定)

認証方法を3つ選べる

認証の仕組みは本当に難しいので、なるべく触れたくない。
GAS側で選択できるのは大変ありがたい。
アクセス範囲を絞ることはセキュリティ対策として有効。

選択肢 スコープ 内容
自分のみ private いわずもがな
ドメイン(会社名)の全員 protected 同じ会社内の人ならアクセスできる。
会社用など特定のGoogleアカウントのみ表示される。
Googleアカウントを持つ全員 internal Googleアカウントを持つ人がログインすれば使用できる。
全員 public いわずもがな

指定したサイクルで自動実行できる

webアプリだけでなくバッチ処理としても利用できます。
ドクターイエロ-の運行案内では毎日実行する設定にして、
スプレットシート内の運行予定日と一致したらBotからメッセージを送信するようにしています。

  1. トリガー→トリガーの追加
  2. 実行する関数を選択
  3. 実行するデプロイを選択→デプロイで指定したバージョンのこと。HEAD=最新
  4. イベントのソースを選択→時間主導型
  5. 時間ベースのトリガーのタイプを選択
  6. 選択値によって実行するサイクルを指定する

エラー通知は選択式ですが、+で通知タイミングが追加できます。

機密情報をプロパティで管理できる

なんかのキーやトークンなど、アプリ固有の機密情報をどこにどう格納してどこから取得するか、
安全かつシンプルに検討する必要があります。
GASにはプロジェクトのプロパティがあり、ここでKey/Valueペアの値を管理することができます。
プロジェクトのプロパティを表示するにはクラシックエディタへの切り替えが必要です。

  1. GASでエディタを開く
  2. クラシックエディタを使用する
  3. ファイルメニュー>プロジェクトのプロパティ
  4. スクリプトのプロパティタブを選択

プロジェクトのプロパティに登録した値は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を進める理由は下記の通りです。

  1. リリース方法がシンプル
  2. 認証方法を3つ選べる
  3. 指定したサイクルで自動実行できる
  4. 機密情報をプロパティで管理できる
  5. JavaScript/TypeScriptで実装できる

引用

33
29
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
29

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?