添付フィールドから日付取得

何を実現したいのかを書きましょう

添付フィールドにファイルが入力されたら、その日付を、別の日付フィールドに自動入力したい。

発生した問題やエラーメッセージを具体的に書きましょう

添付フィールドは様々なイベント発火に対応しておらず、どのようにjavascriptをかけばよいか分からない。

実行したコードをコピー&ペーストしましょう

(function() {
‘use strict’;

// レコード追加・編集の保存前イベント
kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
    var record = event.record;
    
    // 添付ファイルフィールドのフィールドコードを指定
    var attachmentFieldCode = '添付ファイル'; // フィールドコードを変更してください
    
    // 日付を入力するフィールドのフィールドコードを指定
    var dateFieldCode = '日付'; // フィールドコードを変更してください

    // 添付ファイルがある場合のみ処理を行う
    if (record[attachmentFieldCode].value.length > 0) {
        var today = new Date();
        var todayString = today.getFullYear() + '-' +
                          ('0' + (today.getMonth() + 1)).slice(-2) + '-' +
                          ('0' + today.getDate()).slice(-2);
        record[dateFieldCode].value = todayString;
    }

    return event;
});

})();

submitで終わるイベントのときは添付ファイルのvalueが存在しないので
添付ファイルの有無は、クラス名で検索しないと判定できないです。

if (record[attachmentFieldCode].value.length > 0) {
if (document.getElementsByClassName('plupload_file_name').length > 0) {
と書き換えれば動くと思います。

「いいね!」 2

返信ありがとうございます。
これをやりたいのが、複数あるので、以下のコードに書き換えました。

(function() {
    'use strict';

    // レコード追加・編集の保存前イベント
    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], function(event) {
        var record = event.record;

        // 添付ファイルフィールドと日付フィールドの対応を配列で管理
        var fields = [
            { attachmentFieldCode: 'one', dateFieldCode: 'one_date' },
            { attachmentFieldCode: 'two', dateFieldCode: 'two_date' },
            { attachmentFieldCode: 'three', dateFieldCode: 'three_date' },
            { attachmentFieldCode: 'four', dateFieldCode: 'four_date' }
        ];

        // 共通処理
        var today = new Date();
        var todayString = today.getFullYear() + '-' +
                          ('0' + (today.getMonth() + 1)).slice(-2) + '-' +
                          ('0' + today.getDate()).slice(-2);

        fields.forEach(function(field) {
            // 添付ファイルがある場合のみ日付を設定
            if (document.getElementsByClassName('plupload_file_name').length > 0) {
                record[field.dateFieldCode].value = todayString;
            }
        });

        return event;
    });
})();

このスクリプトを埋め込んだ後、レコードの保存が出来なくなってしまいました。

document.getElementsByClassName(‘plupload_file_name’).length > 0 は
ページ全体のファイルの有無を見ているため、この条件を使い続けていると
複数の添付ファイルフィールドのファイルの有無を個別に判定できません。

下記のように forEach 内で、添付ファイルのフィールド名を持つ label や
control-gaia 要素を指定しないといけません。

(() => {
    'use strict';

    kintone.events.on(['app.record.create.submit', 'app.record.edit.submit'], event => {
        const record = event.record;
        // 添付ファイルのフィールド名と、日付のフィールドコードを紐付け
        const dateFields = { one: 'one_date', two: 'two_date', three: 'three_date', four: 'four_date' };
        // 今日の日付を'YYYY-MM-DD'の形式で取得
        const today = new Date().toISOString().split('T')[0];

        // ファイルがある添付ファイルフィールドと紐付く日付フィールドに今日を設定
        document.querySelectorAll('.control-label-text-gaia').forEach(label => {
            const key = label.textContent.trim();
            if (dateFields[key] && label.closest('.control-gaia').querySelector('.plupload_file_name')) {
                record[dateFields[key]].value = today;
            }
        });
        
        return event;
    });
})();

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