問い合わせ通知メールの受け取り設定(10分・佐瀬さま)
カタログサイトで問い合わせがあったとき、sales@hamakaze.co に知らせが届くようにします。
そのために、濱風さまの Google アカウントに小さなスクリプトを1つ置かせてください。
なぜこの形にしたか
メールを送る方法は3つ検討し、この形が濱風さまにとって一番安全だと判断しました。
| 方法 | 判断 |
|---|---|
| この方法(Apps Script) | ✅ 採用。新しい契約が増えず、下記のとおり権限が最小 |
| 外部のメール送信サービスに登録する | 契約が1つ増える。DNS の設定も必要 |
| Gmail の送信権限を開ける | 🔴 採らない。下記参照 |
🔴 Gmail の送信権限を開ける方法を採らなかった理由
濱風さまの手順書に「送信スコープ(gmail.send)は意図的に外している。送信は必ず本人が
Gmail の画面で押す」と書かれています。この方針は妥当だと考えます。
というのも、その権限は 「会社の誰としてでもメールを送れる」 性質のもので、 鍵が漏れたときの被害が大きいためです。通知1本のために開けるものではないと判断しました。
この方法なら、そのスクリプトは「カタログの通知メール」しか送れません。 誰かになりすまして送ることはできません。
手順(10分)
1. スクリプトを作る
- 共用のアカウント(
…@hamakaze.co)で https://script.google.com を開く- ⚠ 個人のアカウントでは作らないでください。 作った方が退職されると止まります
- 左上の 「新しいプロジェクト」 をクリック
- 出てきたコードを全部消して、下の枠の中身をそのまま貼り付けます
- 左上のプロジェクト名を
Tonyaa 通知メールに変えます(分かりやすくするためだけ)
// Tonyaa(需要カタログ)からの問い合わせ通知を、社内メールへ転送する。
// このスクリプトは「通知メール」しか送りません。他の用途には使えません。
// ▼ここだけ書き換えます(好きな長い文字列。パスワードのようなもの)
var SHARED_SECRET = 'ここに長いランダムな文字列を入れる';
// ▼届け先
var MAIL_TO = 'sales@hamakaze.co';
function doPost(e) {
try {
var body = JSON.parse(e.postData.contents);
// 合言葉が違うリクエストは無視する(URLを知られても勝手に送られないように)
if (body.token !== SHARED_SECRET) {
return json({ ok: false, error: 'forbidden' });
}
// 宛先はこのスクリプトが決める。外から指定させない
MailApp.sendEmail({
to: MAIL_TO,
subject: String(body.subject || '[Tonyaa] 新しい問い合わせ'),
body: String(body.text || '')
});
return json({ ok: true });
} catch (err) {
return json({ ok: false, error: String(err) });
}
}
function json(obj) {
return ContentService
.createTextOutput(JSON.stringify(obj))
.setMimeType(ContentService.MimeType.JSON);
}
2. 合言葉を決める
コードの上のほう、ここに長いランダムな文字列を入れる を書き換えます。
- 30文字以上の、意味のない英数字にしてください(例:
k7Qm2xR9vT4bN8wL3zY6pH5sD1fG0jA) - この文字列は後で澤田へお伝えいただきます(メール本文ではなく、口頭か定例で)
3. 公開する
- 右上の 「デプロイ」→「新しいデプロイ」
- 歯車マーク → 「ウェブアプリ」 を選ぶ
- 設定を次のようにします
| 項目 | 選ぶもの |
|---|---|
| 次のユーザーとして実行 | 自分(=このアカウント) |
| アクセスできるユーザー | 全員 |
⚠ 「全員」で不安に感じられるかもしれませんが、合言葉が合わないリクエストは無視する 作りにしてあります。Google の仕組み上、外部のサーバーから呼ぶにはこの設定が必要です。
- 「デプロイ」 を押す
- 初回は 「アクセスを承認」 を求められます。案内に従って許可してください
- 「このアプリは Google で確認されていません」と出たら、「詳細」→「(プロジェクト名)に移動」
- 表示される ウェブアプリの URL をコピーします
4. 澤田へ渡す
次の2つをお知らせください。
- ウェブアプリの URL(
https://script.google.com/macros/s/……/exec) - 合言葉(手順2で決めた文字列)
⚠ メール本文には貼らないでください。 定例のときに画面共有か、口頭でお願いします。
確認していただきたいこと
- 1日に送れる通数に上限があります(Google の仕様)。問い合わせの通知なら十分な量ですが、 将来メーカーさまへ月次レポートを送るようになったら、改めて確認します
- このスクリプトを作ったアカウントが無効になると止まります。 共用アカウントでお願いしているのはこのためです
こちらでやること
- 届いた通知がそのまま返信できる中身になっているか(本文・対象商品・返信先が入っているか)は、 こちらで検査を入れて固定しました
- 通知が失敗したときに気づける仕組みも入れます(届かなかったことに気づけないのが一番困るため)