実現したいこととしては
1.REST APIであるスペースにあるアプリ一覧を取得
2.1.で取得した情報からアプリIDを抽出
3.2.で抽出したアプリIDを用いて各アプリの設定をREST APIで変更
という流れになります。
1および2については実現できているのですが、3の処理でてこずっています。
具体的にはスペースにあるアプリの数は固定ではないため、for文でREST APIを回す方法を
考えているのですがここの手法が分からないためお教えいただけると幸いです。
実現したいこととしては
1.REST APIであるスペースにあるアプリ一覧を取得
2.1.で取得した情報からアプリIDを抽出
3.2.で抽出したアプリIDを用いて各アプリの設定をREST APIで変更
という流れになります。
1および2については実現できているのですが、3の処理でてこずっています。
具体的にはスペースにあるアプリの数は固定ではないため、for文でREST APIを回す方法を
考えているのですがここの手法が分からないためお教えいただけると幸いです。
for文でREST APIの配列を作って、kintone.Promise.allでいけないでしょうか。
https://developer.cybozu.io/hc/ja/articles/215029846-kintone-Promise%E3%81%A8%E3%81%AF#gist-11
コメントありがとうございます。
>for文でREST APIの配列を作って
ここの具体的なイメージがわかっていないのですがご教授いただけませんでしょうか。
具体的に書くと、以下のようなイメージでしょうか。
kintone.api(kintone.api.url('/k/v1/space', true), 'GET', { id: スペースID }).then(function (resp) {
// 取得したスペース内のアプリ情報をループして、フィールドの一覧を取得するAPIを纏めて呼び出す
return kintone.Promise.all(resp.attachedApps.map(function (attachedApp) {
return kintone.api(kintone.api.url('/k/v1/app/form/fields', true), 'GET', { app: attachedApp.appId });
}));
// 以下、上と同じ処理をfor文で書いた場合のイメージ。
// let getFunctions = [];
// for (let i = 0; i < resp.attachedApps.length; i++){
// getFunctions.push(kintone.api(kintone.api.url('/k/v1/app/form/fields', true), 'GET', { app: resp.attachedApps[i].appId }));
// }
// return kintone.Promise.all(getFunctions);
}).then(function (resp) {
resp.forEach(function (fields) {
console.log(fields);
console.log('------------------------');
});
}).catch(function (error) {
console.log(error);
});
PV様
ありがとうございました。いただきました内容でコード記述したところ無事実行できました。
大変助かりました。