添付ファイルの有無をレコード保存時に知りたい

実現したいこと

アプリのレコード追加・編集保存時に添付ファイルがあれば文字列フィールドに何かしらの文字を格納する。ということをしたいです。

添付ファイルのフィールド(record.attachment)のvalue.lengthを取得して、0以上ならば文字列フィールド(record.file_exists)にファイルがある旨のテキストを格納するプログラムにしています。しかし、“app.record.edit.submit”, "app.record.create.submit"イベントだと添付ファイルがあってもvalue.lengthが0になるので、“app.record.edit.submit.success”, "app.record.create.submit.success"イベントにすればvalue.lengthには正しい値が入るが、文字列フィールドへの反映がされない。という状態です。良き方法があれば教えていただけると幸いでございます。

(function () {
  "use strict";

  //1.追加保存した時に添付ファイルがあるかどうか調べファイル有無フィールドに反映させる
  kintone.events.on(["app.record.edit.submit.success", "app.record.create.submit.success"], function (event) {
    let record = event.record;

    let f_length = record.attachment.value.length;
    console.log(f_length);

    if (f_length != 0) {
      record.file_exists.value = "添付ファイルがあります。 詳細は下記URLから確認してください。";
    } else {
      record.file_exists.value = "詳細は下記URLから確認して下さい。";
    }
    debugger;

    return event.record;
  });
})();

保存後にレコード更新するのが楽そうだと思います:eyes:
↓この記事が参考になりそうです!

1 Like

以前のコメントですが、DOM要素から添付ファイル判定を行っています。参考まで。
コードは今風に書き直して利用してくださいませ。

2 Likes

ありがとうございます!
保存成功後にPUT関数で更新するという方法があるんですね!!

コードを書き換えたら…

(function () {
  "use strict";

  kintone.events.on(["app.record.edit.submit.success", "app.record.create.submit.success"], async function (event) {
    let record = event.record;

    let file_exists_text;
    let f_length = record.attachment.value.length;

    if (f_length != 0) {
      file_exists_text = "添付ファイルがあります。 詳細は下記URLから確認してください。";
    } else {
      file_exists_text = "詳細は下記URLから確認して下さい。";
    }

    const Put_body = {
      app: event.appId,
      id: event.recordId,
      record: {
        file_exists: {
          value: file_exists_text,
        },
      },
    };

    let Put_resp = await kintone.api(kintone.api.url("/k/v1/record.json", true), "PUT", Put_body);

    return event.record;
  });
})();

となりました。

動作確認をしたところ正常に動作いたしました!

※ただ実現したいその先なのですが、webhookを利用してレコードが追加されたことをきっかけに dejiren というツールがkintoneからレコードを取得し、LINEWORKSに送るということです。実際動作したら、レコード保存後なので希望の情報がdejiren上では確認できずでした:sweat_drops: しかしながら、このような方法もある!という良い勉強になりました! jurippeさんに感謝です!

1 Like

松田さんありがとうございます!
DOM要素から判定する方法もあるのですね!

コードを書いてみたら(今風でないかもしれないです…)

  kintone.events.on(["app.record.create.submit"], function (event) {
    let record = event.record;
    let file_exists_text;

    var f_length = document.getElementsByClassName("plupload_file_name").length;

    if (f_length != 0) {
      file_exists_text = "添付ファイルがあります。 詳細は下記URLから確認してください。";
    } else {
      file_exists_text = "詳細は下記URLから確認して下さい。";
    }
    record.file_exists.value = file_exists_text;
    return event;
  });

これでレコード保存前にファイル有無をフィールドに格納することが出来ました!

kintoneでこれをしたい!というその先(他ITツールとの連携)もある場合、kintoneでの立ち回りも変えないといけない!ということを学びました!松田さん、感謝でございます!

2 Likes

このトピックは最後の返信から 60 分が経過したので自動的にクローズされました。新たに返信することはできません。