5
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

スプレッドシートをデータベース化したLINEbot

Last updated at Posted at 2019-04-09

#はじめに
けんてぃです!2回目の投稿になります!
ITリテラシが低い人でも簡単に運用できるLINEbotを作りました。
スプレッドシートからデータベースの編集が可能です。

#完成イメージ
↓画面左がスプレッドシート、画面右がLINEの画面です↓
ezgif.com-video-to-gif.gif

#関係図
イメージしやすいようにペタッと
スクリーンショット 2019-04-09 0.16.33.png
実際に作っていきます
手順1:LINE@のアカウント作る
手順2:bot作る
手順3:LINE@とbotの連携
スクリーンショット 2019-04-09 0.16.59.png

##1LINE@のアカウント作り
こちらに世界一わかりやすく書かれていますのでこの通り進めてください。記事は(1)、(2)、(3)と続いていますが今回は(1)だけで結構です。(参考記事:http://bit.ly/2VA94gQ)

##2botつくる
①まず、スプレッドシートのシート名を「bot」に変更します。
②③次にスプレッドシートを開き、必ず共有する。(スプレッドシート画面右上の共有>共有可能なリンクを取得>OK)
スクリーンショット 2019-04-09 1.24.21.png

次にスプレッドシートからGASを開き、(ツール > スクリプトエディタ)
スクリーンショット 2019-04-07 3.45.34.png
下のコードを上の場所にコピペする


//CHANNEL_ACCESS_TOKENを設定
var CHANNEL_ACCESS_TOKEN = 'アクセストークン'; 
var line_endpoint = 'https://api.line.me/v2/bot/message/reply';
function doPost(e) {
  var json = JSON.parse(e.postData.contents);

  //返信するためのトークン取得
  var reply_token= json.events[0].replyToken;
  if (typeof reply_token === 'undefined') {
    return;
  }

  //送られたLINEメッセージを取得
  var user_message = json.events[0].message.text;  

  //返信する内容を作成
  var reply_messages;
  
  // sheetを特定するまでの決まりパターンでsheetを特定
  //'bot'はスプレッドシートのシート名
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('bot');
  
  // シート内のすべてのデータを取得する
  var data = sheet.getDataRange().getValues();

  // キーワードが合っていれば対応するデータをreply_messagesに格納
  for (var i = 1; i < data.length; i++) {
    
    if (data[i][0] == user_message) {
      reply_messages = [ '' + user_message + '」はこちら\n'+ '' + data[i][1] + '' ,];
      break;
    } else {
      // キーワードが合っていなければ以下をreply_messagesに格納
      reply_messages = ['「キーワード」を入力してみて!'];
    }
  }
  // 「キーワード」と入力された場合、スプレッドシートのA列を全てreply_messagesに格納
  if('キーワード'==user_message){
    var language;
     for (var i = 1; i < data.length; i++) {
       if(language==undefined){
       language=''+data[i][0]+'';
       }else{
         language+='\n'+''+data[i][0]+'';//'「'+language+'」\n';//+'「'+data[i][0]+'」';
       }
     }
    reply_messages = [language];//['「キーワード」が入ったよ!'];
  }

  // メッセージを返信
  var messages = reply_messages.map(function (v) {
    return {'type': 'text', 'text': v};    
  });    
  UrlFetchApp.fetch(line_endpoint, {
    'headers': {
      'Content-Type': 'application/json; charset=UTF-8',
      'Authorization': 'Bearer ' + CHANNEL_ACCESS_TOKEN,
    },
    'method': 'post',
    'payload': JSON.stringify({
      'replyToken': reply_token,
      'messages': messages,
    }),
  });
  return ContentService.createTextOutput(JSON.stringify({'content': 'post ok'})).setMimeType(ContentService.MimeType.JSON);
}

トークン=LINE Developersからアクセストークンを再発行し、コピペ
LINE Developers画面の出し方(LINE@MANAGERから、アカウント設定>messaging API設定>LINE Developersで設定する)

そしてbotを公開します(GASの画面から、公開>ウェブアプリケーションとして導入)以下のように設定し更新!!画像の赤枠は一旦無視!!
スクリーンショット 2019-04-09 1.08.21.png

##3連携させる
最後にLINE@とbotを連携させます。
先程ウェブアプリケーションとして公開すると、URLが表示されたかと思います。上の画像でいう赤枠部分のURLをコピーし、LINE DevelopersのWebhook URLに貼り付け!!
また、以下のように設定してください
Webhook送信:利用する
自動応答メッセージ:利用しない
(※https://が重複しないよう注意)
スクリーンショット 2019-04-09 1.15.48.png

#最後に
これで完成!試してみてください!!組織のマニュアルをまとめてもよし、自分のお気に入りURLをまとめてもよしかなと思います。(参考記事:http://bit.ly/2VA94gQ)

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?