LoginSignup
8
2

More than 1 year has passed since last update.

GASとline messaging APIで洗濯タイマーbotを作った話(その2:GAS編)

Last updated at Posted at 2021-12-25

はじめに

LIGHTzアドベントカレンダー 2021の19日目の記事です。

この記事では、google apps script(GAS)を使ってサーバレスでLINEbotを作る方法をご紹介します。
LINE側でのアカウント取得やmessaging APIの初期設定については、前回の記事をご参照ください。

前回のおさらい

今回やること

  • いよいよGoogleAppsScript (GAS)を書いていきます!
  • まずは「友だちから受け取ったメッセージを取得し、返す」というシンプルなbotをつくります。

GASを書いてみよう

  • googleアカウントにログイン
  • google app scriptのページに移動
  • 「新しいプロジェクトを作成」をクリック image.png
  • エディタが開きました!ここにコードを書いていきます。 image.png

ひよこ返しbotのコードを入力

code.js

//スクリプトプロパティ(後述)で定義したアクセストークンを入れる
const ACCESS_TOKEN = PropertiesService.getScriptProperties().getProperty("ACCESS_TOKEN");
//endpointのURIを定義
const line_endpoint = 'https://api.line.me/v2/bot/message/reply';

//ポストでLINEのメッセージ内容が送られてくるので、送られてきたJSONをパース
function doPost(e) {
  const json = JSON.parse(e.postData.contents);

  //送られてきたメッセージに対して返信するトークンを取得
  const reply_token= json.events[0].replyToken;
  if (typeof reply_token === 'undefined') {
    return;
  }

  //パースされたJSONからメッセージ部分を取得
  const message = json.events[0].message.text;  

  // メッセージをendpointに返信    
  UrlFetchApp.fetch(line_endpoint, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': reply_token,
  // 送信するメッセージ内容を定義(ここでは語尾に「っぴ」をつける)
      'messages': [{
        'type': 'text',
        'text': message+'っぴ', }],
    }),
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

スクリプトプロパティにアクセストークンを入力

※ アクセストークンの取得方法については前回の記事で解説しています
- [ファイル]→[プロジェクトのプロパティ]をクリック
- [スクリプトのプロパティ]に下記のように入力
- [保存]を押下で完了。これでソースにアクセストークンをべた書きしなくて良くなります!
image.png

いよいよデプロイ

  • [公開]→[ウェブアプリケーションとして導入]をクリック
  • 適当にプロジェクト名を設定(日本語でOK) image.png
  • Project Version:Newを選択
  • Execute the app as : Meを選択
  • Who has access the app: Anyone,even anonymousを選択
    (重要!LINE側からアクセスする必要があるため、今回はwebアプリは公開する必要があります)
    image.png

  • [Deploy]をクリック

  • 下記画面が表示されたらデプロイ完了です!お疲れさまでした。
    「Current web app URL」をコピーしましょう。
    image.png

※公開したwebアプリのURLの管理には気を付けましょう。

LINE側のwebhookに公開したwebアプリを設定

  • LINE公式のアカウントマネージャー→アカウントに移動
  • 右上の設定ボタンをクリックして、[messaging API]の設定画面に移動 image.png
  • Webhook URLに先ほどコピペした「Current web app URL」を貼り付け、「保存をクリック」 image.png

自分のLINEアカウントでテスト

  • LINE公式のアカウントマネージャーの[ホーム]→[友達を増やす]→[友達追加ガイド]から、自分の個人LINEアカウントに追加できます(URL or QRコード)
    image.png

  • もちろんアカウントID直打ちで追加してもOK

なんかしゃべってみる

成功しました。かわいいですね。
image.png

ね、簡単でしょう?

GASもLINEbotも初めてでしたが、20分程度で作成できました!
次回はいよいよタイマー機能の実装に入っていきます。つづく。

8
2
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
8
2