今回は、添付のExcelファイルを書き換えたものをアップロードするカスタマイズです。
※ただしExcelの書式は消えてしまいます(><)
添付ファイルAのExcelファイルの中身を書き換えて、添付ファイルBにアップロードします。
アプリの準備
フィールド種類 | フィールドコード | 備考 |
---|---|---|
スペース | spBtn | ボタン設置用 |
添付ファイル | 添付ファイルA | ダウンロードして書き換える |
添付ファイル | 添付ファイルB | 書き換えたものをアップロードする |
添付するExcelファイルは前回使用したExcelファイルを使います。
JavaScript
使用するライブラリは下記2つです。
JavaScript / CSSでカスタマイズに設定しておきます。
https://unpkg.com/@kintone/rest-api-client@latest/umd/KintoneRestAPIClient.min.js
https://unpkg.com/xlsx/dist/xlsx.full.min.js
詳細画面表示後イベントに下記コードを書いていきます。
// スペースフィールドにボタン設置
const sp = kintone.app.record.getSpaceElement("spBtn");
const btn = document.createElement("button");
btn.textContent = "ボタン";
sp.appendChild(btn);
// ボタンクリック
btn.addEventListener("click", async () => {
const obj = kintone.app.record.get();
const client = new KintoneRestAPIClient();
// 添付ファイルAに添付のエクセルファイルを読み込む
const data = await client.file.downloadFile({
fileKey: obj.record["添付ファイルA"].value[0].fileKey,
});
// 添付ファイルAフィールドのエクセルファイルのセルA1の値を"あいうえお"にする
const workbook = XLSX.read(data, { type: "array" });
workbook.Sheets[workbook.SheetNames[0]].A1 = {
v: "あいうえお",
};
// "あいうえお"にしたデータをExcelファイルにする
const wo = XLSX.write(workbook, { type: "array" });
// ダウンロードする(ついでに)
XLSX.writeFile(workbook, "あいうえおにした.xlsx");
// 作ったExcelファイルをアップロードして添付ファイルBフィールドに添付する
const FILE = {
name: "あいうえおにした.xlsx",
data: wo,
};
const { fileKey } = await client.file.uploadFile({
file: FILE,
});
await client.record.updateRecord({
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
添付ファイルB: {
value: [{ fileKey }],
},
},
});
// 画面更新
location.reload();
});
動作確認&まとめ
添付ファイルAの中身を書き換えて添付ファイルBに添付されます。
ついでにダウンロードもされます。