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

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


#完成イメージ
↓画面左がスプレッドシート、画面右がLINEの画面です↓
![ezgif.com-video-to-gif.gif](https://qiita-image-store.s3.amazonaws.com/0/286009/573c86d9-93e3-7b96-70bc-d4844c14772b.gif)



#関係図
イメージしやすいようにペタッと
<img width="549" alt="スクリーンショット 2019-04-09 0.16.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/286009/99d7ff1c-2b42-290a-6ea7-4af9e4cce869.png">
実際に作っていきます
手順１：LINE@のアカウント作る
手順２：bot作る
手順３：LINE@とbotの連携
<img width="572" alt="スクリーンショット 2019-04-09 0.16.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/286009/0b2b5ee5-d898-1cfb-98c9-9c1397f132b9.png">



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


##2botつくる
①まず、スプレッドシートのシート名を「bot」に変更します。
②③次にスプレッドシートを開き、必ず共有する。（スプレッドシート画面右上の共有>共有可能なリンクを取得>OK）
<img width="1440" alt="スクリーンショット 2019-04-09 1.24.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/286009/a02c0bc7-84d5-ec7d-e669-058b66ebd720.png">

次にスプレッドシートからGASを開き、（ツール > スクリプトエディタ）
<img width="1440" alt="スクリーンショット 2019-04-07 3.45.34.png" src="https://qiita-image-store.s3.amazonaws.com/0/286009/a505e3a5-edbc-7f07-7a57-e0f1b8ef33af.png">
下のコードを上の場所にコピペする

```js

//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の画面から、公開>ウェブアプリケーションとして導入）以下のように設定し更新！！画像の赤枠は一旦無視！！
<img width="1440" alt="スクリーンショット 2019-04-09 1.08.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/286009/c5c4671e-4122-55d3-f60e-2d9a1055127a.png">




##3連携させる
最後にLINE@とbotを連携させます。
先程ウェブアプリケーションとして公開すると、URLが表示されたかと思います。上の画像でいう赤枠部分のURLをコピーし、LINE DevelopersのWebhook URLに貼り付け！！
また、以下のように設定してください
**Webhook送信**：利用する
**自動応答メッセージ**：利用しない
（※https://が重複しないよう注意）
<img width="1440" alt="スクリーンショット 2019-04-09 1.15.48.png" src="https://qiita-image-store.s3.amazonaws.com/0/286009/ca4d6f3a-f34e-a867-81fb-2d61620a9fcd.png">




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