添付ファイル変更時のみレコード変更通知をしたい

背景・実現したいこと

添付ファイルを変更した時のみ、レコード変更通知を特定のメンバーに送りたいです。

プロセス管理も併用しているため、特定のステータスの時には、特定のメンバーに通知を送るというような標準機能の通知ではできないようなことをしたいと考えております。

調査済みのこと

・添付ファイルの変更時イベントが存在しない

・添付ファイルの情報が取得できるタイミングは、「レコード保存成功時」のみである

実装方法

  1. 添付ファイルが新規追加、又は変更されてレコードが保存されたとき、「添付ファイル変更フラグ(数値フォーム)」の数値をインクリメントする

  2. 添付ファイル変更フラグが0以外の場合は、変更通知を送る。

上記の方法で実装したいと考えております。

分からないこと

・添付ファイルが追加・変更された情報を取得することができるか。

・可能な場合はそのソースコードを知りたい

 

よろしくお願いいたします。

19737386552857

app.record.edit.show のタイミングで現在のrecordを取得しておき、app.record.edit.submit のタイミングで添付ファイルのfilekeyの値が変更されているかどうかを確認すると良いのかなーと思いました。

細谷様

ありがとうございます。

アドバイスいただいた通り、実装することが可能でした。

(function() {

    "use strict";

  let file_key;

  function editShow(event) {
        let record = event.record;

      // 変更前の添付ファイルキーを取得する
      file_key = record.foo.value[record.foo.value.length-1].fileKey;
      return event;
    }

    function editSubmitSuccess(event) {

      let record = event.record;
      const app_id = 999;
      const record_id = kintone.app.record.getId();
      let count = record.edit_count.value;
        let flg_1;

      // 添付ファイルが変更されたとき
        if (file_key != record.foo.value[record.foo.value.length-1].fileKey) {

          // 変更フラグを立てる
            flg_1 = 1;

          // 変更回数を加算する
            count++;

        } else {

          // 変更フラグを0にする
          flg_1 = 0;
      }
      // レコードを更新する
      let param = {
          "app" : app_id,
          "id"  : record_id,
          "record" : {
              "edit_flg"   : {"value": flg_1},
              "edit_count"    : {"value": count}
          }
      };
        return kintone.api(kintone.api.url("/k/v1/record", true), "PUT", param).then(function(resp) {

          return event;
      }).catch(function(resp) {
          console.log("アプリ更新エラー");
          console.log("メッセージ:" + error.message);
          message = "アプリの更新に失敗しました。管理者に連絡してください。";
          alert(message);
          return event;
      });
      return event;
  }

  kintone.events.on("app.record.edit.show", editShow);

  // 保存成功時
  kintone.events.on("app.record.edit.submit.success", editSubmitSuccess);

})();

 ※app.record.edit.submitは添付ファイルのfileKeyを取得できなかったため、app.record.edit.submit.successを使用しています。

よかったです!

このトピックはベストアンサーに選ばれた返信から 3 日が経過したので自動的にクローズされました。新たに返信することはできません。