弊社は、お問い合わせフォームのプラグインにContactForm7を利用している。
最近、迷惑メールが多すぎて、お問い合わせフォームからいただいたメールを見逃すことが増えてきたため、ContactForm7から送られてきたものをSlackに送りたいと考えた。その記録を残しておく。
前提
- GASを自分で組むのは初めて
- 原始的でOK、イレギュラー対応を考える必要はない
- スプレッドシートの方で削除、編集は考えていない
尚、誰かのお役に立てればいいなとは思っていますが、あくまでも備忘録的な記事であり、本件についてのお問い合わせはご遠慮ください。
★ほかに、基礎からしっかり解説しているページが多いため、本ページでは、基礎は不要な方を対象としています。
GoogleSpreadSheetに送るプラグインを入れる
このプラグインを利用して、問い合わせ内容をGoogleスプレッドシートに転記する。
インストール後に認証を忘れないようにしましょう。
1
SlackにAppを設定する
従来のWebhookの設定は古いそうなので、新しい情報を得て設定。WebhookのURLをゲットする。
ちなみに、Appの修正は、AppページのYourAppsからしか行けない。他に行ける方法はありそうだが…
2
GASを設定する
以下のように設定。GASの設定の仕方は、他のページに丁寧に解説されているので、そちらをご覧ください。
function onEdit() {
//スクリプトに紐付いたスプレッドシートのアクティブなシートを読み込む
let mySheet = SpreadsheetApp.getActiveSheet();
//読み込んだシートの最終行を取得する
let lastRow = mySheet.getLastRow();
//最終行の内容を取得。5列分。(最後の5を変える)
//列の最終行の自動取得をしなかったのは、フォームの全ての項目を埋めるとは限らないため
let values = mySheet.getRange(lastRow,1,1,5).getValues();
//分割代入
let name,other;
//1行目だけ配列を取得(これが正しいのかはわからない)
[name,other]= values[0];
notifySalck(`
問い合わせが来ました
お名前:${name}
コメント:${other}
`);
}
function notifySalck(message){
//下のURLは2でゲットしたものを入れる
var postUrl="WebhookURL";
var userName = "ユーザー名";
var payloadObj = {
username:userName,
text:message
}
var payloadJson = JSON.stringify(payloadObj);
var options = {
method:"post",
contentType:"application/json",
payload:payloadJson
}
UrlFetchApp.fetch(postUrl,options);
}
3
トリガーの設定
GASのトリガーを変更時に設定。
4
以上。
参考書籍
助かりました。GASを学びたい方は必携。