shikumika’s diary

日々の事務作業で手間なことを簡単にできる仕組み(自動化、方法など)、困ったことの解決方法を調べた備忘録

【kintone】文字列フィールドにテキストを自動入力、編集不可の方法(JavaScriptサンプル)

「フィールドに値を自動でセットしたいけど、後から書き換えられると困る…」 そんな悩みはありませんか?

以下の記事では、JavaScriptによるカスタマイズ事例としてログインユーザー名を文字列フィールドに自動入力する方法を紹介しています。

【kintone】ログインユーザー名を自動入力する方法(JavaScriptサンプル) - shikumika’s diary

今回はこの記事を参考に、「自動入力した値を編集不可にする」 仕組みを加えた改善版を紹介します。

編集不可にしたい場合は、コードに record[フィールドコード].disabled = true を1行追加するだけで実現できます。

レコードの再利用やアプリアクションでコピーした特定のフィールドを編集不可にしたい場合にも参考になる方法です。

内容:

動作確認は、2026年4月時点のkintone(スタンダードコース)です。


なぜJavaScriptカスタマイズが必要か

レコードの再利用・アプリアクションでコピーしたフィールドを編集不可にできない

kintoneには、登録済みレコードの内容をコピーして新規登録できるレコードの再利用機能や、アプリアクション機能があります。 ただし、いずれの方法もコピー後に編集が可能な状態になります。

コピーしたフィールドを編集不可にしようとして、フィールドのアクセス権で「編集不可」に設定すると、コピーされるはずの値が空欄になってしまいます

「[フィールドのアクセス権]の設定で編集のチェックを外すと、レコードを再利用する際にも、そのフィールドは編集できずに空欄で保存されます。」

出典:レコードを再利用して登録するときに、特定のフィールドを編集できないようにしたい - kintoneヘルプ

つまり標準機能では、「値をコピーしてきて編集不可にする」ことができません。 この課題を解決するために、JavaScriptカスタマイズが必要になります。

アクセス権とJavaScriptの disabled は動作が異なる

「アクセス権で編集不可」と「JavaScriptで disabled = true」は、一見似ていますが動作が異なります。

「フィールドの編集を不可に設定しても、値を書き換えることができます。編集権限のないフィールドの値を書き換えた場合、フィールドの値を変更できません。」

出典:イベントオブジェクトで実行できる操作 - cybozu developer network

つまり、JavaScriptの disabled = true はフォーム上の手入力を制限するものです。 JavaScriptコードからの値のセットは引き続き有効なため、自動入力と編集ロックを組み合わせて使うことができます。 一方、アクセス権で「編集不可」に設定すると、JavaScriptからの値の書き換えも反映されません。

方法 再利用・コピー時の値 JavaScriptからの書き換え
アクセス権で編集不可 空欄になる 反映されない
disabled = true(今回) 値が保持される 可能

JavaScriptカスタマイズのポイント解説

編集不可の基本は .disabled = true を追加するだけ

record[targetField].disabled = true;

この1行は、値のセット処理より後に書くことを推奨します。 動作上の違いはありませんが、「自動入力してからロック」という処理の意図が コードから読み取りやすくなります。

一覧画面のインライン編集にも対応

kintoneでは[レコードの一覧]画面でレコードを直接編集できるインライン編集機能があります。

標準機能でインライン編集自体を無効にすることもできます(参考:[レコードの一覧]でのレコードの直接編集と削除を無効にする | kintoneヘルプ)。

次のサンプルコードではインライン編集を有効にしたまま、指定したフィールドのみ編集不可にする方法を示しています。
一覧画面のビューに対象フィールドが含まれていない場合も考慮し、フィールドの存在確認を行っています。

その他の注意点

  • ライトコースではJavaScriptカスタマイズを利用できません
  • 次のコードの 作成者名 はフィールドコードです。フィールド名と異なる場合があるため、アプリの設定画面で確認してください
  • .disabledフォーム表示中のみ有効です。API経由の更新を制限するには、アクセス権やプロセス管理を併用してください

サンプルコード

【kintone】ログインユーザー名を自動入力する方法(JavaScriptサンプル) - shikumika’s diary を参考に、「自動入力した値を編集不可にする」 仕組みを加えたサンプルです。

(function() {
    'use strict';

    const events = [
        'app.record.create.show',
        'app.record.edit.show',
        'mobile.app.record.create.show',
        'mobile.app.record.edit.show',
        'app.record.index.edit.show'        // 追加:一覧画面でのインライン編集開始時、モバイルは機能なし
    ];

    kintone.events.on(events, function(event) {
        const record = event.record;

        // ▼ 設定1:フィールドコード(アプリに合わせて変更してください)
        const targetField = '作成者名';

        // ▼ 設定2:自動入力したいテキスト(例:ログインユーザー名)
        const autoText = kintone.getLoginUser().name;

        // 一覧画面(インライン編集)では対象フィールドが現在のビューに含まれていない場合があるため確認
        if (!record[targetField]) {
            return event;
        }

        // 空欄のときだけセット(編集画面での上書きを防ぐ)
        if (!record[targetField].value) {
            record[targetField].value = autoText;
        }

        // フィールドを編集不可にする
        record[targetField].disabled = true;

        return event;
    });
})();

autoText の値を変えることで、次の用途にも対応できます。

用途の例 autoText に設定する値
ログインユーザー名 kintone.getLoginUser().name
ログインユーザーのメールアドレス kintone.getLoginUser().email
固定テキスト '営業部'

設定手順

1.アプリの準備

文字列(1行)フィールドを追加し、フィールドコードを 作成者名 に設定します。

2.JavaScriptファイルを登録

上記のコードをテキストエディタ(「メモ帳」など)にコピーし、

項目 内容
文字コード UTF-8(BOMなし)※Windows「メモ帳」の場合は「UTF-8」を選択
ファイル名 set_field_locked.js(任意)

として保存後、「JavaScript / CSSでカスタマイズ」の設定画面でアップロードしてください。 アップロード手順の詳細はJavaScriptやCSSでアプリをカスタマイズする | kintoneヘルプをご参照ください。


まとめ

  • 標準機能のアクセス権では「値をコピーしてきて編集不可にする」ことができないため、JavaScriptカスタマイズが必要になる
  • record[フィールドコード].disabled = true を1行追加するだけで編集ロックを実現できる
  • autoText の値を変えることで、ユーザー名以外の任意のテキストにも応用できる
  • .disabled はフォーム表示中のみ有効。完全な保護にはアクセス権・プロセス管理の併用が必要

以上、文字列フィールドにテキストを自動入力して編集不可にする方法でした。