
Note
kintoneのフィールドコードをGoogleスプレッドシートとGASを使って一括で変更する手順を解説します。
kintoneの設定作業で頭を悩ませていたのが「フィールドコードの編集作業」。
フィールドをデータベースのテーブルに見立ててテーブル定義を行い、CSVでアプリを構築することでフィールドは一括作成が可能ですが、フィールドコードを1つずつ編集するのが本当に面倒でした。
100個前後のフィールドであれば、気合を入れて1つずつ設定をしていたのですが、フィールドが450個必要な案件に出会い、「フィールドコードを一括編集できないのか?」というシンプルな問いに重い腰が上がりました。
kintoneアカウントがあり、APIトークンが取得可能であること
GoogleスプレッドシートとGASを使用できること
1-1. kintoneの対象アプリを開き、アプリの設定画面に移動

1-2. 設定タブを開き、「APIトークン」を選択

1-3. APIを生成後、「アプリ管理」のチェックを選択してから「保存」ボタンをクリック
(作成したAPIトークンは後ほどGASで利用するためコピーしておく)

2-1. 新しいスプレッドシートを作成し、「フィールド情報」というシートを作成。1行目の項目名を以下のように入力してください。
<項目名>
フィールド名,現在のフィールドコード,新しいフィールドコード,フィールドタイプ
3-1. スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択

3-2. 以下のコードをコピーし、Apps Scriptエディタに貼り付けます。
// kintoneのドメイン、アプリID、APIトークンを設定
const KINTONEDOMAIN = 'yourdomain'; // 例: 'example.cybozu.com'
const APPID = 'yourapp_id';
const APITOKEN = 'yourapi_token';
// スプレッドシートのシート名
const SHEET_NAME = 'フィールド情報';
/**
* kintoneからフィールド情報を取得し、スプレッドシートに一括出力する関数
*/
function exportCurrentFieldsToSheet() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
if (!sheet) {
SpreadsheetApp.getActiveSpreadsheet().insertSheet(SHEET_NAME);
}
sheet.clear();
// 見出し行の設定
const headers = ['フィールド名', '現在のフィールドコード', '新しいフィールドコード', 'フィールドタイプ'];
sheet.appendRow(headers);
const url = `https://${KINTONEDOMAIN}/k/v1/app/form/fields.json?app=${APPID}`;
const options = {
method: 'get',
headers: {
'X-Cybozu-API-Token': APITOKEN
}
};
// kintoneからフィールド情報を取得
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
// スキップするフィールドの配列
const skipFields = ['カテゴリー', 'レコード番号', '作業者', '更新者', '作成者', 'ステータス', '更新日時', '作成日時'];
// フィールドデータを配列に格納
const rows = [];
for (const fieldCode in data.properties) {
const field = data.properties[fieldCode];
// スキップするフィールドでなければ追加
if (!skipFields.includes(field.label)) {
rows.push([field.label, field.code, '', field.type]);
}
}
// 一度にデータをスプレッドシートに出力
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
}
/**
* スプレッドシートから情報を読み取り、kintoneのフィールドコードを一括更新する関数
*/
function updateFieldCodesByFieldName() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
const data = sheet.getDataRange().getValues();
// 既存のフィールド情報を取得し、フィールド名をキーとしたオブジェクトに格納
const existingFields = {};
for (let i = 1; i < data.length; i++) {
const [fieldName, fieldCode, , fieldType] = data[i];
// 空でない行のみを処理対象とする
if (fieldName && fieldCode && fieldType) {
existingFields[fieldName] = { code: fieldCode, type: fieldType };
} else {
Logger.log(`スキップ: 行 ${i+1} に空のフィールド名、フィールドコード、またはフィールドタイプが含まれています`);
}
}
const propertiesToUpdate = {};
for (let i = 1; i < data.length; i++) {
const [fieldName, , newFieldCode, newFieldType] = data[i];
// フィールド名で一致した場合、かつフィールドタイプが同じ場合にのみ更新
if (existingFields[fieldName]) {
if (existingFields[fieldName].type === newFieldType) {
propertiesToUpdate[existingFields[fieldName].code] = {
code: newFieldCode,
label: fieldName,
type: newFieldType,
required: false // 必須設定が必要な場合はtrueに変更
};
} else {
Logger.log(`スキップ: フィールド「${fieldName}」のタイプが一致しません。既存のタイプ:${existingFields[fieldName].type}、指定されたタイプ:${newFieldType}`);
}
} else {
Logger.log(`スキップ: フィールド名「${fieldName}」が既存フィールドに見つかりません`);
}
}
if (Object.keys(propertiesToUpdate).length === 0) {
Logger.log("更新するフィールドがありません。スプレッドシートのデータを確認してください。");
return;
}
const url = `https://${KINTONEDOMAIN}/k/v1/preview/app/form/fields.json`;
const options = {
method: 'put',
headers: {
'X-Cybozu-API-Token': APITOKEN,
'Content-Type': 'application/json'
},
payload: JSON.stringify({
app: APPID,
properties: propertiesToUpdate
})
};
try {
const response = UrlFetchApp.fetch(url, options);
const result = JSON.parse(response.getContentText());
Logger.log(result);
} catch (e) {
Logger.log(`エラーが発生しました: ${e.message}`);
}
}貼り付けたコードのうち、KINTONEDOMAIN、APPID、APITOKEN の値を以下のように設定します。
KINTONE_DOMAIN:kintoneのサブドメイン(例:example.cybozu.com)
APPID:変更したいアプリのID(kintoneのURL内に記載されている数字)
APITOKEN:手順1-3でコピーしたAPIトークン
4-1. kintoneの情報を出力
現在kintoneに設定されているフィールド情報をスプレッドシートに出力するため、 exportCurrentFieldsToSheet 関数を実行してください。

4-2. 変更後の値を入力
先ほど作成したスプレッドシートにkintoneの情報が出力されていることが確認できたら、C列に新しいフィールドコードの値を入力します。
※フィールド名(A列)、現在のフィールドコード(B列)、フィールドタイプ(D列)は変更できません

4-3. kintoneのフィールドコードを一括変更
GASを開き、updateFieldCodesByFieldName 関数を実行後、kintoneのアプリ設定画面を開いてください。
「反映前の変更があります」と表示されていればプログラムによる操作が正常に完了していますが、現段階では保存はされていない状態です。
※「アプリを更新」ボタンをクリックすれば一括変更の完了です。

4-4. 試しに、再度GASで exportCurrentFieldsToSheet 関数を実行すると、以下のようにフィールドコードが変更されていることが確認できます。

450項目を構築したアプリでは、生成AI(Claude)を利用して指定の命名規則によるフィールドコードを生成し、一括で変更を行なったため、15分程度で作業が完了しました。
スパプラでは、kintoneをベースとした「デジプラDX」というフルカスタマイズ可能なシステム開発をパッケージ展開しています。バックエンド機能をkintoneで代替し、画面デザインや同期処理はプログラムで柔軟に構築するため、フルオーダーメイドの自社システムや管理画面をリーズナブルな価格でご提供できるプランとなっています。お気軽にお問い合わせください。
関連記事
まずは、お気軽に相談ください
スパプラではAIを活用した業務効率化や機能開発を多数行っております。DXやシステム開発をご検討の際は、お気軽にご相談ください。
新着記事

CONTACT
お問い合わせ

まずは、無料相談から。 構想段階のアイデアやサービスについてお気軽に相談ください。