課題
kintoneで外部システムとの連携を設定するときなどに、
外部システムでフィールドIDだけで表示/指定することがあるが、
IDを英数字で設定している場合、ぱっと見ではそれが何を表しているか分からない。
(自分で付けたものの130個以上あったので私は覚えきれない…)
しかし、kintone上のGUIで下記のように1個1個確認していくには大変すぎる。
他人に共有するのも大変だし。。。

そのため、フィールド名とフィールドIDが並んだ一覧を取得したい。
(ついでに、チャットGPTにID名を含むSQLを書かせたい)
JavaScriptを使ってかんたんに取得できる方法を記載していく。
事前準備(必要なパッケージのインストール) ※初回のみ
ターミナルから必要なパッケージをインストールしておく
npm install axios json2csv
取得用コードの作成
以下のコードを新しいJavaScriptファイルとして作成してください。
なお、subdomain、appId、apiTokenの値は対象のアプリのものに変更してください。
const axios = require('axios');
const { Parser } = require('json2csv');
const fs = require('fs');
const subdomain = 'subdomain'; // 対象kintoneサブドメインを指定
const appId = 'app-id'; // 対象アプリIDを指定
const apiToken = 'api-token'; // 対象アプリで作成したAPIトークンを指定
const url = `https://${subdomain}.cybozu.com/k/v1/app/form/fields.json`;
// フィールド情報を取得し、CSVに書き出す関数
async function fetchAndExportFields() {
try {
const response = await axios.get(url, {
headers: { 'X-Cybozu-API-Token': apiToken },
params: { app: appId }
});
const fields = response.data.properties;
const csvData = Object.keys(fields).map(fieldCode => ({
"Field Name": fields[fieldCode].label,
"Field ID": fieldCode
}));
// フィールド名で昇順にソート
csvData.sort((a, b) => a["Field Name"].localeCompare(b["Field Name"]));
// JSONデータをCSVフォーマットに変換
const json2csvParser = new Parser({ fields: ["Field Name", "Field ID"] });
const csv = json2csvParser.parse(csvData);
// CSVファイルに書き込む
fs.writeFileSync('kintone_fields.csv', csv);
console.log('CSV file successfully written: kintone_fields.csv');
} catch (error) {
console.error('Error:', error);
}
}
// 関数を実行
fetchAndExportFields();
完了したらデスクトップなどのわかりやすい場所に、
「getKintoneFieldsToCSV.js」という名前で保存します。
実行
まず、先ほど設定したJavaScriptと同じディレクトリまで移動する
下記はデスクトップに移動するコマンド
cd ~/Desktop
移動後、下記を入力し、JavaScriptを実行
node getKintoneFieldsToCSV.js
問題なく完了すれば、
デスクトップ上にkintone_fields.csvという名前で、
フィールド名とフィールドIDの一覧のCSVが生成されるので確認する
応用
これをチャットGPTなどのAIにUPして学習させれば、
つどアルファベットのIDを記載することなく、フィールド名でSQLを書かせられるので、
IDの確認方法だけでなく、分析用クエリの制作にも有用である。