Karenのブログ

Karenの好きな事を好きなだけ書いていく。

【GAS開発】LINE Botの内容をGoogleスプレッドシートに送る【LINE Bot】

かれんです.
今回はGAS,Google Application Script,を使った開発のお話.
#GAS #GoogleApplicationScript #LINEBot #GoogleSpreadsheet

f:id:km_anastasia:20190516021745j:plain

 

突然ですが現在寮でRA,Resident Assistanceなるものをしています.
自分の住んでいるフロアを見守るお仕事です.ただ研究室やらインターンやらであんまり寮にいる時間が長くない!周りよりもコミュニケーションの時間が少ない!
そこでとりあえずなにか在庫管理とか匿名の相談とかがうまくできるツールないかな~って考えまして

LINE Botだ!

と思いついたわけです.

 

なんでLINE Botにしたかというと,

①単純に開発してみたかった
②なんかみんなLINEなら使うかな?という思い付き
③意気込まずに話しかける感じで使えそう

......要は,触ってみたかっただけです笑

そしてその開発ツールとしてとしてGASを選びました.GASはサーバいらずで簡単なAPIが作れるので最強.
GASでLINE Botになにか記入されたらGoogleスプレッドシートに記録される,って感じですね.じゃあここから作り方.

 

作成物

入力された内容がGoogleスプレッドシートに記録されるLINE Bot

ツール

Google Application Script

手順

①LINE Botを作成

めちゃくちゃわかりやすいこれ見て作成.

qiita.com

②LINE Botの最初のメッセージを記入

③Messaging APIトークンを発行
トークンは,ユーザ認証とかが必要なWebサービスとかで初回ログイン以降そのユーザを特定するために使う文字列のこと.ユニークなランダムの文字列で大体16,32,64桁とからしいです.

④記録したいGoogleスプレッドシートを用意

⑤ツールからスクリプトエディタを選択→GASへ飛ぶ

⑥GASにスクリプト記述

// LINE developersのメッセージ送受信設定に記載のアクセストークン
var ACCESS_TOKEN = ' ';

// spreadSheetの設定
//https://docs.google.com/spreadsheets/d/"この部分がid"/edit#gid=1856578608
var id = ' ';
var spreadsheet = SpreadsheetApp.openById(id);

// 応答メッセージ用のAPI URL
var url = 'https://api.line.me/v2/bot/message/reply';

function doPost(e) {
  // WebHookで受信した応答用Token
  var replyToken = JSON.parse(e.postData.contents).events[0].replyToken;
  // ユーザーのメッセージを取得
  var userMessage = JSON.parse(e.postData.contents).events[0].message.text;
  var today = new Date();
  
  var userMessageArray = userMessage.split(' ');
  var ansMessage;
  
  if(userMessage=='その他'){
    ansMessage='どのようなご用件でしょうか?教えてください。\n\n追って連絡いたします。\n*ユーザ名は記録されません。個人的な相談の場合は〇〇に直接相談してください。';
  }else if(userMessage=='ヘルプ'){
    ansMessage='物品発注の際は「物品名 個数」を記入してください。その他の際は「その他」と記入してください。';
  }else{
    ansMessage='ありがとう!メッセージを記録しました。\n\n使い方を知りたいときは「ヘルプ」と記入してね。';
  }

  //sheetに記入する
  var sheet = spreadsheet.getSheetByName("シート名");
  sheet.appendRow([userMessage, today]);
  
  UrlFetchApp.fetch(url, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': replyToken,
      'messages': [{
        'type': 'text',
        'text': ansMessage,
      }],
    }),
    });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
} 

⑦Webアプリケーションとして公開する

以下に注意.

qiita.com

 

はい,終わり.めちゃくちゃ簡単.挙動は以下の感じ.

f:id:km_anastasia:20190516020809p:plain

 

で,これが記録されると

f:id:km_anastasia:20190516020812p:plain

こんな感じ.

ちなみに一応言っておくとお風呂は汚くないです,テストでぱっとうっただけです笑

 

 

またユーザ名とったりすると大変なのかなあ?今度時間があればやってみようかな.

 

その他参考にしたサイト

qiita.com

yoshikii.com

copyright© 2019-2019 KAM