9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【3分クッキング】コピペとGASで作るLINEBot入門(2024/4)

Last updated at Posted at 2021-01-25

##概要
LINEBotやってみたいけど、よくわかんないんだよなーっていう方おられませんか!
入門記事も沢山あり、内容が古いもの、動かないもの、いろいろ転がっています。
とくにGAS(Google App Script)は導入が無料かつ実装が楽なので特にアウトプットされやすい模様です。

普段はAWSを使っていて、GASは数年振りだったので入門記事を模索しながら、自分なりのテンプレートコードを作成しました。

▼テンプレートを使ったらカップラーメンよりも先にLINEBotができちゃう

###①LINE公式アカウントを作成
LINEDeveloperConsoleこちらにいき作っていきます。
この辺りからアクセストークンを取得するあたりはどの記事を読んでも書いているので省略します。
とりあえず、友達登録とアクセストークンを発行してメモだけしておきましょう。

###②GASにソースコードをデプロイしていく
GASはみんな大好きGoogleDriveから作ることができます。 
スプレッドシートをデーターベースのように扱うこともできるので、まずはスプレッドシートを作成しましょう。スプレッドシートを開くことができたら、上のタブからツール>スクリプトエディタと選択していきます。
スクリプトエディタが開いたら、エディタ内に書かれているものを全て消します。そして以下
のソースコードをコピペします。

index.js
const ACCESS_TOKEN = "先ほど取得したアクセストークンを貼り付ける";
async function doPost(e) {
  for (let i = 0; i < JSON.parse(e.postData.contents).events.length; i++) {
    const event = JSON.parse(e.postData.contents).events[i];
    const message = await eventHandle(event);
    //応答するメッセージがあった場合
    if (message !== undefined) {
      const replyToken = event.replyToken;
      const replyUrl = "https://api.line.me/v2/bot/message/reply";
      UrlFetchApp.fetch(replyUrl, {
        headers: {
          "Content-Type": "application/json; charset=UTF-8",
          Authorization: "Bearer " + ACCESS_TOKEN,
        },
        method: "post",
        payload: JSON.stringify({
          replyToken: replyToken,
          messages: [message],
        }),
      });
    }
  }
  return ContentService.createTextOutput(
    JSON.stringify({ content: "post ok" })
  ).setMimeType(ContentService.MimeType.JSON);
}

async function eventHandle(event) {
  let message;
  switch (event.type) {
    case "message":
      message = await messagefunc(event);
      break;
    case "postback":
      message = await postbackFunc(event);
      break;
    case "follow":
      message = await followFunc(event);
      break;
    case "unfollow":
      message = unfolowFunc(event);
      break;
  }
  return message;
}
//メッセージイベントの処理
async function messagefunc(event) {
  return { type: "text", text: event.message.text };
}
//ポストバックイベントの処理
async function postbackFunc(event) {
  return { type: "text", text: event.postback.data };
}
//友達登録時の処理
async function followFunc(event) {
  return { type: "text", text: "友達登録ありがとうございます!!" };
}
//友達解除後の処理
async function unfollowFunc() {
  return undefined;
}

貼り付けが完了したら、コードの一行目"先ほど取得したアクセストークンを貼り付ける""ajsjkdddeifsjdksdj-1"のように書き換えるのをお忘れなく。

デプロイ>新しいデプロイ>デプロイ>警告みたいなのが出たら左下にある詳細を押して許可する>URLをコピー>LINEのコンソールのWebhookURLに貼り付ける>webhookをオンにする!!

###③おうむがえしするか確認する
LINEのトークでBotに喋りかけるだけ!!

#終わりに
いかがだったでしょうか。何かわからないこととか、気になることがあればtwitter@inoue2002までご連絡ください。
できる限り相談にのらせていただきます😁
お疲れ様でした。

#AWSにも挑戦してみたい方へ
以前、AWS使ったことのない人でもLINEBotをAWSで作れるQiita記事を連載しております。是非合わせてご覧ください→AWSLINEBotをみんなで作ろう1日目

9
9
1

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
9
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?