Google Apps Script(gas)でline botの作り方

Google Apps Script(gas)でline botの作り方

「Line Botをつくってみたい」
「Google Apps Script(Gas)でアプリをつくってみたい」

そんな方に向けて、記事を書いています。

はじめまして。現役エンジニアのkazと申します。

私は、Google Apps Scriptを勉強し始めて、最初にLine Botを作成しました。
今回は、その時に作成した実際のコードをもとに解説をしていきます。

これからプログラミングをする方のお役に立てばと思います。

アクセストークンの取得

まずは、LINEのアカウント登録やアクセストークンが必要となります。

下記のサイトがわかりやすく解説されていたので、
アクセストークンを取得してください。

gasでLINEボットを作成する手順

①gasのプロジェクトを作成する。

まずは、gasのプロジェクトを作成しましょう。
gasを使用するには、googleアカウントがあれば、無料で使用できます。

プロジェクト作成方法は、下記のサイトにまとめられてるので、参照してください。

https://tonari-it.com/gas-script-editor/

②コードを作成

では、準備が整ったので、コードを書いていきます。
今回は、テストとして、ボットから定型文が返信されるところまでの手順を解説していきます。

doPost関数

まずは、doPost関数です。
LINEからbotに対して、メッセージなどが送信された場合に走る処理を書いていきます。

内容は、LINEから送信されたデータを取得し、sendTextMessage関数でBotから返信されます。

// LINEの認証を突破するために必要なお作法
// botのChannel基本設定の画面で発行した鬼のように長い文字列を""の中にセット
var secret_token = "drkB9QOmZZ7VAsaQtggmGlgfDElqpvv+e7B0papBOx6CByhCvuKdYplNbg0FgldDSiLGBBxOcsGvlC0VzDaOWYxBfh5vsasERu54+n2so+QfkhM4nxHptlZcJXIJ+GXXsIVUVhM0NWaE1/bVAXd5SAdB04t89/1O/w1cDnyilFU="
var secret = "Bearer " + secret_token;

function doPost(e) {
  var json,token,requestText,releaseInfo,responseText;
  try{
    // LINEから送信されたデータを取得(テキストメッセージそのものではない。)
    json = e.postData.getDataAsString();
    
    // LINEから送信されてきたデータから、リプライトークン(返信するために必要)を取得
    token = JSON.parse(json).events[0].replyToken;
    
    // 送信されてきたテキストを取り出し
    requestText = JSON.parse(json).events[0].message.text;
    
    responseText = "ここに返信メッセージを記載";
    sendTextMessage(responseText,token);
    
  }catch(e){
  }finally{
  }
}

sendTextMessage関数

次に返信用の関数を書いていきます。

内容は、リプライ用のAPIを使用し、返信に必要なヘッダー情報を入力します。

基本的な形で書いていますので、テキストを返信するだけであれば、下記の内容のままで問題ありません。

function sendTextMessage(responseText,token){
  // リプライを返すAPIのURI
  var url = "https://api.line.me/v2/bot/message/reply";
  
  // お作法① HTTPヘッダーの設定
  var headers = {
    "Content-Type" : "application/json",
    "Authorization":secret
  };
  
  // お作法② 下記の構造でリクエストボディにデータを持つ
  var data = {
    "replyToken" : token, 
    "messages" : [{
      "type" : "text",
      "text" : responseText
    }]
  };
  
  var options = {
    "method" : "POST",
    "headers" : headers,
    "payload" : JSON.stringify(data)
  };
  
  // 返信!
  return UrlFetchApp.fetch(url, options);
}

以上で、LINE BOTの完成です。