kintoneアプリのレコード追加時に入力内容をメールしたい
ユーザーに対してやるやつはあるんだけど、項目にたとえば「メールアドレス」をつくって、そこに対して送信ってのは無い、からどうにかする
準備
- SendGridにお願いしてアカウント作る
- API Key発行してコピーしてメモっとく
-
SendGrid APIを使ってメールを送信するプラグインを作ってみようの
sendgrid_plugin.zip
をいれる - フロントエンドとなるアプリで、↑のプラグインを利用する設定にする
- 設定でAPI Keyを設定しとく
前提
↓設定はこんなやつにしとく ※重要:フィールドコード
を使うので適切に設定する
steps
1. ↓これを適当にコピってファイルつくる
record_save_sendmail.jp
(function() {
"use strict";
// レコード登録時にメールを送信
kintone.events.on("app.record.create.submit.success", function(e) {
var records = e.record;
var to_mailaddr = records['メールアドレス']['value'];
// 担当者メールアドレスが存在すれば送信する
if( to_mailaddr !== undefined && to_mailaddr !== '' ){
var subject = 'レコード追加されました';
// body
var textbody = 'Hello '+to_mailaddr+'\n\n';
Object.keys(records).forEach(
function(key){
// Objcet は無視する
if( typeof records[key]['value'] !== 'object' ){
// なにもない空欄項目はなしにする
if( records[key]['value'] == undefined || records[key]['value'] == '' ) {
records[key]['value'] = 'なし';
}
textbody += '【'+key+'】 '+records[key]['value']+'\n\n';
}
}
);
var sending = new kintone.Promise(function(resolve, reject) {
// to, cc, bcc, mailFrom, subject, text, html, callback, errback
kintonePlugin.sendgrid.sendMail(
to_mailaddr, null, null, 'noreplay@example.com',
subject, textbody, null,
function(resp) {
resolve(e);
}, function() {
event.error = 'メール送信に失敗しました';
reject(e);
}
);
});
return sending;
}
});
})();
ちなみに、空の場合はundefined
になるので、ほんとなら存在するかを見たほうが良い
2. 'noreplay@example.com' を変える
ここは from になる
3. アプリの設定画面を開く
4. 「設定」タブの JavaScript/CSSでカスタマイズ を開く
5. jsをアップロード
6. 設定画面の「アプリの更新」を押す
↓これマジ押し忘れて変更が反映されずブチ切れるハメになるから気をつけような
7. レコード保存時に動く
補足
event handle functionの引数e
object中の record
は、以下に準拠してるよ
https://cybozudev.zendesk.com/hc/ja/articles/201942014-%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%89%E8%A9%B3%E7%B4%B0%E6%83%85%E5%A0%B1%E5%8F%96%E5%BE%97
event自体の詳細はここ
https://cybozudev.zendesk.com/hc/ja/articles/201941984