kintone アプリの添付ファイル容量一覧を表示
はじめに
kintone には容量制限があり、容量の大きい添付ファイルを削除したい場合があります。
できること
ブラウザの開発者コンソールを利用して kintone アプリの添付ファイル容量の一覧を出力します。テーブルの添付ファイルフィールドにも対応しています。

実行方法
開発者コンソールを開いてページ下部のコードを貼り付けます。
レコード数が多い場合はコード内のコメントに従って変数 condition を変更してください。
ブックマークレットの作成(ブックマークレットとして利用する場合)
ブックマークレット化の手順は次のページを参考にしてください。
コード
((f) => { const script = document.createElement("script"); script.src = "https://unpkg.com/@kintone/rest-api-client@2.0.27/umd/KintoneRestAPIClient.min.js"; script.onload = () => { f(); }; document.body.appendChild(script);})(async () => { // 一覧として表示する最小容量 const minCapa = 1000000; // 1MB未満は表示しない // const minCapa = 10000000; // 10MB未満は表示しない // const minCapa = 100000000; // 100MB未満は表示しない
// レコード数が多い場合はこのconditionの内容を変更してください const condition = "$id >= 1 and $id <= 10000"; // const condition = "$id >= 10001 and $id <= 20000"; // const condition = "$id >= 20001 and $id <= 30000";
const idKey = "__レコード番号__"; const totalKey = "__合計__"; const client = new KintoneRestAPIClient(); const app = kintone.app.getId();
const { properties } = await client.app.getFormFields({ app });
const fileFields = Object.values(properties) .filter(({ type }) => type === "FILE") .map(({ code }) => code);
const tableFileFields = Object.values(properties) .filter(({ type }) => type === "SUBTABLE") .reduce((acc, { code: tableCode, fields }) => { const codes = Object.values(fields) .filter(({ type }) => type === "FILE") .map(({ code }) => code); return { ...acc, [tableCode]: codes }; }, {});
if ( fileFields.length === 0 && Object.values(tableFileFields).flat().length === 0 ) { console.log("添付ファイルフィールドが存在しません。"); return; }
const records = await client.record.getAllRecords({ app, fields: fileFields.concat(Object.keys(tableFileFields)), condition, });
const totalizeFileSize = (a, b) => a + parseInt(b.size, 10);
const volumes = records.map((record) => { const volume = {}; for (const fileField of fileFields) { volume[fileField] = record[fileField].value.reduce(totalizeFileSize, 0); }
for (const tableFileField of Object.keys(tableFileFields)) { for (const fileField of tableFileFields[tableFileField]) { volume[fileField] = 0; for (const row of record[tableFileField].value) { volume[fileField] += row.value[fileField].value.reduce( totalizeFileSize, 0 ); } } }
const total = Object.values(volume).reduce((a, b) => a + b);
// 添付ファイルフィールドの容量は出力しない場合 // return { [idKey]: record.$id.value, [totalKey]: total };
// 添付ファイルフィールドの容量も出力する場合 return { [idKey]: record.$id.value, [totalKey]: total, ...volume }; });
const overVolumes = volumes.filter((volume) => volume[totalKey] > minCapa);
overVolumes.sort((a, b) => a[totalKey] - b[totalKey]);
for (const overVolume of overVolumes) { overVolume[totalKey] = Number(overVolume[totalKey]).toLocaleString(); }
console.info(...overVolumes);});
面倒な人用
ブックマークレットの作成が面倒な人は「 添付ファイル容量 」をブックマックバーにドラッグ・アンド・ドロップしてください。