MENU

問い合わせフォームから入った内容をLineに転送する技

Lineの文化なドメインってあるじゃないっすかー。それのときに喜ばれるやつをやってみた。

目次

問い合わせフォームからLine転送の概要

概要としては、Googleフォームから問い合わせ(回答)が入ったらそれをLineへ転送するというだけ。

Line Notifyというのに登録(無料)し、スプシ側にコードを入れることで実現できます。

ちょっと詰まったりもしたから自分は1〜2時間くらいかかったけど、ミスらなければ15分くらい(確認込み)で行けます。

ちなみになんでGoogleフォームなのという話は以下の記事をどうぞ。わいはもうサーバーサイドを信用しない。

問い合わせフォームからLine転送のやり方・具体的な実現手順

手順は以下の通り。

というか以下のページの通り。(外部サイト。圧倒的感謝!)

https://tech.minagu.work/archives/21

ざっくり書くと以下の感じ。

  1. フォーム作る
  2. スプシ連携する(スプシでみるみたいなのする)
  3. LineNotifyに登録
  4. Lineグループ作ってトークンコードを発行(グループ単位で発行する感じ)
  5. グループにLineNotifyを招待する
  6. スプシ側でコードを入れる
  7. トリガーを設定
  8. 認証を通す(ポップアップブロックに注意)
  9. 検証
  10. 完了!

コードをフォーム側じゃなくてスプシ側で入れる必要があって、これをしないと「スプレッドシートから取得」がねえ!!みたいになります。Line公式の記事の方はここが罠でやられましたわ。

あとなんか詰まったらChatGPTに聞けばいいと思う。自分に聞かれても知らんしっていいます。

コードは以下。(引用まま。引用元が消えてしまったときに困らないようにこっちにも書かせてください。お願いします。)

//spreadsheetからデータを取得
function GoogleFormToLine(){
  const sheet = SpreadsheetApp.getActiveSheet(); //sheetの指定
  const row = sheet.getLastRow(); //行数
  const column = sheet.getLastColumn(); //列数
  const range = sheet.getDataRange(); //sheetから範囲指定するための準備
  let message = "";
  for(i=1;i<=column;i++){
    const item = range.getCell(1, i).getValue(); //1行目
    let value = range.getCell(row, i).getValue(); //最終行
    if(item == "タイムスタンプ"){ //タイムスタンプを見やすくする
      value = Utilities.formatDate(value,"JST","yy/MM/dd(E) HH:mm:ss");
    }
    message += "\n■"+item+"\n"+value; 
  }
  SendToLine(message);
}

//LINEに通知
function SendToLine(message){
  const token = PropertiesService.getScriptProperties().getProperty('LINE_TOKEN');
  const op =
    {
      "method" : "post",
      "Content-Type" : "application/x-www-form-urlencoded",
      "payload": "message=" + message,
      "headers":{"Authorization" : "Bearer " + token}
    };
  const res = UrlFetchApp.fetch("https://notify-api.line.me/api/notify",op);
  Logger.log(JSON.parse(res.getContentText())); //Response
}

//Tokenを登録する
//1回実行したら、以下のコードを削除する
function RegisterToken(){
  const LINE_TOKEN = "{LINE_TOKEN_xxxxxxxx}" //ここにLINE_TOKENを入力する
  PropertiesService.getScriptProperties().setProperty('LINE_TOKEN',LINE_TOKEN);
}
https://tech.minagu.work/archives/21

終わりに。Googleカレンダーとかと連携したいよね。

そんな感じ。アナログな分野のサイトとか作る人はやってあげるとすげー喜ばれる気がする。

あとはGoogleカレンダーとかと連携していい感じに予約システムにしたい。今後の課題。終わり。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次