kintoneアプリのレコード追加時に項目参照してメールを送信するやつ

# kintoneアプリのレコード追加時に入力内容をメールしたい

ユーザーに対してやるやつはあるんだけど、項目にたとえば「メールアドレス」をつくって、そこに対して送信ってのは無い、からどうにかする

# 準備

1. SendGridにお願いしてアカウント作る
2. API Key発行してコピーしてメモっとく
2. [SendGrid APIを使ってメールを送信するプラグインを作ってみよう](https://cybozudev.zendesk.com/hc/ja/articles/206584633-SendGrid-API%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%83%A1%E3%83%BC%E3%83%AB%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E3%83%97%E3%83%A9%E3%82%B0%E3%82%A4%E3%83%B3%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86)の `sendgrid_plugin.zip` をいれる
3. フロントエンドとなるアプリで、↑のプラグインを利用する設定にする
4. 設定でAPI Keyを設定しとく

# 前提

↓リンクで欄をつくる
![スクリーンショット 2017-05-10 17.16.47.png](https://qiita-image-store.s3.amazonaws.com/0/97659/38f0ba48-a455-8364-d854-1559ec5324b4.png)

↓設定はこんなやつにしとく　※重要：`フィールドコード`を使うので適切に設定する
![スクリーンショット 2017-05-10 17.17.21.png](https://qiita-image-store.s3.amazonaws.com/0/97659/ed4f2d7a-c453-e165-1ff1-5378d39bf4ab.png)

↓こんな欄にする 
![スクリーンショット 2017-05-10 17.16.04.png](https://qiita-image-store.s3.amazonaws.com/0/97659/a58f44ca-aa8a-6692-5ac5-139e78a5976d.png)


# 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でカスタマイズ を開く

↓これ
![スクリーンショット 2017-05-10 17.27.13.png](https://qiita-image-store.s3.amazonaws.com/0/97659/1d87d8e1-ab3a-ceaf-c493-7604c364b81f.png)

## 5. jsをアップロード

![スクリーンショット 2017-05-10 17.27.01.png](https://qiita-image-store.s3.amazonaws.com/0/97659/140812fb-4133-9085-530a-0567cdf90450.png)

## 6. 設定画面の「アプリの更新」を押す

↓これマジ押し忘れて変更が反映されずブチ切れるハメになるから気をつけような
![スクリーンショット 2017-05-10 17.29.21.png](https://qiita-image-store.s3.amazonaws.com/0/97659/09a51f0e-c5d8-a747-85f7-6af994e77207.png)

## 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