何を実現したいのかを書きましょう
先日、こちらで皆様にご相談させていただき(https://community.cybozu.dev/t/topic/9920/2)その際は自己解決することができました。
今回は、前回完成した下記のソースの発動イベントをapp.record.edit.submit ⇒ app.record.create.submit へ変更したくお力をお借りしたくよろしくお願いいたします。
発生した問題やエラーメッセージを具体的に書きましょう
ソースの発動イベントをapp.record.edit.submit ⇒ app.record.create.submit へ変更して、一行ずつデバッグを行うとエラーは発生しませんが、
const blob = await client_host.file.downloadFile({
の行でデバッグモードが強制終了してしまいます。
そのため別アプリから取得した添付ファイルを自アプリに保存できない状況が発生しております。
実行したコードをコピー&ペーストしましょう
(() => {
kintone.events.on(["app.record.edit.submit"], async(event) => {
const record = event.record;
var record_id = 1;
// kintone REST API Client の力を借りる 別アプリのレコード情報取得用
const client_guest = new KintoneRestAPIClient();
// kintone REST API Client の力を借りる 自アプリの添付ファイルアップロード用
const client_host = new KintoneRestAPIClient();
(async() => {
try {
const res = await client_guest.record.getRecord({
app: "124",
id: record_id
});
// 添付ファイルがない場合は更新処理はしない
const files = res.record.会社ロゴ.value;
if (files.length === 0) {
alert("添付ファイルがありません")
return;
}
const dl_fileKey = res.record.会社ロゴ.value[0].fileKey;
alert(dl_fileKey);
// 添付ファイルフィールドのダウンロードキーからblobを作成
const blob = await client_host.file.downloadFile({
fileKey: dl_fileKey, // ダウンロードファイルキー
});
// アップロードするファイルを作成
const FILE = {
name: res.record.会社ロゴ.value[0].name, // ファイル名
data: blob,
};
// アップロードしてアップロードキーを取得する
const ulFileKey = await client_host.file.uploadFile({
file: FILE,
});
//自アプリの添付ファイルフィールドにアップロードキーを保存(更新)する
const new_fileKey = ulFileKey.fileKey;
const params = {
app: kintone.app.getId(),
id: kintone.app.record.getId(),
record: {
logo: {
value: [{
fileKey: new_fileKey
}]
}
}
};
await kintone.api(kintone.api.url('/k/v1/record.json', true), 'PUT',
params)
.then((resp) => {
// PUT成功
alert('更新は成功しました。');
return event;
}).catch((error) => {
// PUTエラー
console.log(error);
event.error = 'エラーが発生しました。';
return event;
});
} catch (err) {
console.log(err);
}
})();
return event;
});
})();