GoogleFormsの回答をSendGridを使ってZendeskに送る
社内からGoogleFormsで受け取った回答をZendeskに飛ばしてほしいと依頼があったので、Sendgridを使って実現しました。
弊社では問い合わせ窓口になっているGmailでメールを受信した場合、Zendeskに自動的にチケットが作成される運用を行っているので、そのアドレスにGoogleFormsの回答を送信できれば問題なさそうです。
GASだけだとメールの送信者を自由に設定できない
このフォームでは回答者のメールアドレス入力が必須となっているので、メールの送信者を回答者のアドレスに設定すれば良いだろう、と進めていたところ、早速障害にぶつかりました。
なんと、GASのGmailAppでメールを送信する場合、送信者(送信元メールアドレス)の指定に制限がかかっており、スクリプト所有者のメールアドレスしか送信者に設定できないのです・・・。
SendgridのAPIを使おう
メールさえ送信できれば良いわけで、GmailAppにこだわる必要はありません。
ちょうど弊社ではSendgridを利用していたので、このAPIを使ってみましょう。
SendgridのAPIキーを作成
まずはSendgridでAPIキーを作成します。
メール送信の機能だけ必要なので、アクセス制限はMail Send
のみ有効でOKです。
GoogleFormsでスクリプトを作成
GoogleFormsで作成したフォームでスクリプトエディタを開き、2つの関数を作成します。
初回実行時に外部APIの呼び出しなどの権限確認が必要なので、適宜デバッグなどを実行してください。
SEND_GRID_ENDPOINT = "https://api.sendgrid.com/v3/mail/send";
SEND_GRID_API_KEY = "SendgridのAPIキー";
function sendEmailBySendGrid(to, subject, from, from_name, body_text) {
var body = {
"personalizations": [
{
"to": [
{
"email": to
}
],
"bcc": [
{
"email": from
}
],
"subject": subject
}
],
"from": {
"email": from,
"name": from_name
},
"content": [
{
"type": "text/html",
"value": body_text
}
]
}
var payload = JSON.stringify(body);
UrlFetchApp.fetch(SEND_GRID_ENDPOINT, {
method: 'POST',
headers: {
"Content-Type": 'application/json',
"Authorization": "Bearer " + SEND_GRID_API_KEY
},
payload: payload
});
}
function sendform(e) {
// 「getActiveForm を呼び出す権限がありません(You do not have permission to call getActiveForm)」エラー対策
FormApp.getActiveForm();
// 入力項目から本文を作成
var items = e.response.getItemResponses();
var msg = "";
for (var i = 0; i < items.length; i++) {
var item = items[i];
var q = item.getItem().getTitle();
var a = item.getResponse();
msg += q + ": " + a + "\n\n";
}
// 送信元の名前とメールアドレスを取得
// items[x]のインデックスは環境に合わせて変更してください
var sender_name = items[5].getResponse();
var sender_email = items[6].getResponse();
// メール送信
sendEmailBySendGrid("送信先メールアドレス", "メール件名", sender_email, sender_name, msg)
}
トリガーを設定
あとはいつもどおりフォームの送信イベントをトリガーにsendform
関数を呼べば完了です。
参考リンク
SARAHでは一皿に特化したごはん情報の投稿・配信・収集・解析するサービスをtoC,toBと多角的に展開しています。アプリ / Web / SaaS / データサイエンス を最新の環境と技術で広く運用します。 技術スタック詳細はこちら→ stackshare.io/companies/sarah-inc
Discussion