見出し画像

コード量が半減するGAS専用LINEBOTライブラリを公開

はじめに

今回はGASからLINE Messaging APIを利用するライブラリを作りました。

GASからLINEを利用する際以外とコードが長くなり、複数のプロジェクトで使う場合に非常に面倒です。

そこで直感的に操作できるように二つのライブラリを制作しました。

このライブラリを使えば、コード量が圧倒的に減少します。

メッセージ送信

ライブラリ無し:24行
ライブラリ使用:6行

→コード量75%削減

// ライブラリを使わない場合

    const userId = "送信相手のID";
    const messages = [{
      type : 'text',
      text : '送信したいメッセージのテキスト'
    }];

    const endpoint = 'https://api.line.me/v2/bot/message/push';
    
    const payload = {
      to : userId,
      messages : messages,
      notificationDisabled : true
    };

    const lineBotAccessToken = 'LINEBOTのアクセストークン';

    const header = {
      'Content-Type' : 'application/json',
      'Authorization': 'Bearer ' + lineBotAccessToken
    };

    const option = {
      method : 'POST',
      headers : header,
      payload : JSON.stringify(payload),
      muteHttpExceptions : true
    };

    const response = UrlFetchApp.fetch(endpoint, option);

    return JSON.parse(response);
// 開発したライブラリを使う場合

const lineBotAccessToken = 'LINEBOTのアクセストークン';

const userId = 'メッセージ送信相手のID':

const lineBot = LineBot.create(lineBotAccessToken);

coest message = LineMessage.createTextMessage('送信したいメッセージのテキスト');

lineBot.sendPush(userId , [message]);

返信

ライブラリ無し:27行
ライブラリ使用:7行

→コード量74%削減

// ライブラリを使わない場合

function doPost(e){

   if(!e.hasOwnProperty('postData')) return false;

   const event = JSON.parse(e.postData.getDataAsString()).events[0];

   const replyToken = event.replyToken;

   const messages = [{
      type : 'text',
      text : '送信したいメッセージのテキスト'
    }];

    const endpoint = 'https://api.line.me/v2/bot/message/push';
    
    const payload = {
      replyToken : replyToken,
      messages : messages,
    };

    const lineBotAccessToken = 'LINEBOTのアクセストークン';

    const header = {
      'Content-Type' : 'application/json',
      'Authorization': 'Bearer ' + lineBotAccessToken
    };

    const option = {
      method : 'POST',
      headers : header,
      payload : JSON.stringify(payload),
      muteHttpExceptions : true
    };

    const response = UrlFetchApp.fetch(endpoint, option);

    return JSON.parse(response);
}


// 開発したライブラリを使う場合

function doPost(e){

   const lineBotAccessToken = 'LINEBOTのアクセストークン';

  const lineBot = LineBot.create(lineBotAccessToken);

  const replyToken = lineBot.receivedEvent(e).getReplyToken();

   const replyMessage = LineMessage.createTextMessage('送信したいメッセージのテキスト');

   const replyResult = lineBot.reply(replyToken , [replyMessage]);
}

LineBotライブラリ

このライブラリはLineBotインスタンスを返却し、メソッドを利用してメッセージの送受信ができます。

スクリプトID:1oePw_FOmC39iZwbVp988ISagmg2S7Kk80VpY7EDaIAsqfbiqLwghV1YD

現在実装中のメソッドは5つです。

①プッシュメッセージを送信する

◆メソッド名
・sendPush
◆引数
・to:{String} 送信先のID
・messages:{Array} 送信するLineMessageオブジェクトの配列
・notifiactionDisabled:{Boolean} メッセージの通知設定 

◆戻り値
・成功:レスポンスオブジェクト
・失敗:エラーオブジェクト

②返信メッセージを送信する
◆メソッド名
・sendReply

◆引数
・replyToken:{String} 返信用トークン
・messages :{Array} 送信するメッセージの配列 最大5件まで

◆戻り値
・成功:レスポンスオブジェクト
・失敗:エラーオブジェクト

③ボットの基礎情報を取得する
◆メソッド名
・getBotInfo

◆引数
・なし

◆戻り値
・成功時:レスポンスオブジェクト
・失敗時:エラーオブジェクト

④フォロワーのIDを取得する
◆メソッド名
・getFollwerIds

◆引数
・limit : 取得するユーザー数の上限(デフォルト300)

◆戻り値
・フォロワーIDの配列

⑤イベントを受信するメソッド
◆メソッド名
・receiveEvent

◆引数
・e  doPostで受け取るイベントオブジェクト

◆戻り値
・イベントオブジェクト(JSON)

LineMessageライブラリ

このライブラリはLineMessageオブジェクトを返却します。
LineMessageオブジェクトはLineBotインスタンスのメッセージ送信メソッドで利用するオブジェクトです。

スクリプトID:1T42K6_IV6qXjG3PN7J_BmD0cFnPz3oSxtmlAgNVOJ7P1PSaebzB11gsf

現在実装中のメソッドはテキストメッセージを返却するメソッドのみです。

今後はLINEに実装される13パターンのメッセージ作成用のメソッドを、随時追加していく予定です。

無料で使えますので是非一度お試しください。
スクリプトIDを利用したいプロジェクトの画面左にある「ライブラリ」のプラスボタンから検索してみてください。






この記事が気に入ったらサポートをしてみませんか?