Lineの文化なドメインってあるじゃないっすかー。それのときに喜ばれるやつをやってみた。
目次
問い合わせフォームからLine転送の概要
概要としては、Googleフォームから問い合わせ(回答)が入ったらそれをLineへ転送するというだけ。
Line Notifyというのに登録(無料)し、スプシ側にコードを入れることで実現できます。
ちょっと詰まったりもしたから自分は1〜2時間くらいかかったけど、ミスらなければ15分くらい(確認込み)で行けます。
ちなみになんでGoogleフォームなのという話は以下の記事をどうぞ。わいはもうサーバーサイドを信用しない。
あわせて読みたい


ロリポップ×ムームーDNSで問い合わせフォームからのメール全部飛ばなくなる問題【解せない】
運営しているとあるサイトで、どうやら問い合わせフォームが機能していないようだ・・という状況に。 CMSはWordPress、フォームとしてはContactForm7を使用。 問い合わ…
問い合わせフォームからLine転送のやり方・具体的な実現手順
手順は以下の通り。
というか以下のページの通り。(外部サイト。圧倒的感謝!)
https://tech.minagu.work/archives/21
ざっくり書くと以下の感じ。
- フォーム作る
- スプシ連携する(スプシでみるみたいなのする)
- LineNotifyに登録
- Lineグループ作ってトークンコードを発行(グループ単位で発行する感じ)
- グループにLineNotifyを招待する
- スプシ側でコードを入れる
- トリガーを設定
- 認証を通す(ポップアップブロックに注意)
- 検証
- 完了!
コードをフォーム側じゃなくてスプシ側で入れる必要があって、これをしないと「スプレッドシートから取得」がねえ!!みたいになります。Line公式の記事の方はここが罠でやられましたわ。
あとなんか詰まったらChatGPTに聞けばいいと思う。自分に聞かれても知らんしっていいます。
コードは以下。(引用まま。引用元が消えてしまったときに困らないようにこっちにも書かせてください。お願いします。)
https://tech.minagu.work/archives/21//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); }
終わりに。Googleカレンダーとかと連携したいよね。
そんな感じ。アナログな分野のサイトとか作る人はやってあげるとすげー喜ばれる気がする。
あとはGoogleカレンダーとかと連携していい感じに予約システムにしたい。今後の課題。終わり。
コメント