for文内のif文処理について

お世話になっております。

またまた初歩的な質問で恐縮です。

現在、slack連携を検討している中で、下記のことをやりたいと思っております。

 

やりたいこと

・レコードのサブテーブル内の値をslackで通知

・サブテーブルが複数行の場合はその都度通知をする

上記、ユーザーにA、Bといたらそれぞれ通知をする。(slackのチャンネルは分けなくてもOK)

 

(テーブルの定義は省略)

for (var i = 0; i < rec.length; i++) {

var usr = rec[i].value[“ユーザー選択”].value[0].name;
var date = rec[i].value[“日付”].value;

var payload = {
‘text’: usr + “さんが登録されました。” +
date + “までに対応お願いいたします!”
}

}
return new kintone.Promise(function(resolve, reject) {
kintone.proxy(WEBHOOK_URL, ‘POST’, {}, payload, function(body, status, headers) {
console.log(status, body);
resolve(event);
});
});

上記のソースでは2番目に取得した値(B)のみがslackに通知されてしまいます。
1番目の値(A)も通知するためにはどこを修正すればいいのかご教示ください。

 

よろしくお願いいたします。

こんにちは。

Slackへ通知する処理がfor文の外側にあるからでは無いでしょうか?

(for文の処理が終わってから、1回だけSlackへの通知が実行されている状態)

asagaさん

こんにちは!ご回答ありがとうございます。
Slackへの通知処理をfor文の内側へ入れてみたのですが、今度は一番目(A)のみの表記になってしまいました。
開発ツール上も特にエラーはないのですが、ループが1回で終わってしまっているみたいです。

引き続き確認してみようと思います。もし指摘事項あれば引き続きご教示いただけますと幸いです。


for (var i = 0; i < rec.length; i++) {

var usr = rec[i].value[“ユーザー選択”].value[0].name;
var date = rec[i].value[“日付”].value;

var payload = {
‘text’: usr + “さんが登録されました。” +
date + “までに対応お願いいたします!”
}
return new kintone.Promise(function(resolve, reject) { 
kintone.proxy(WEBHOOK_URL, ‘POST’, {}, payload, function(body, status, headers) {
console.log(status, body); 
resolve(event);
});
});
}

あー、すいません、Primiseなんでfor文の中だと想定した動きにはならないですねー。

kintone.Promise.allを使う事になると思いますが、一度developer network内を検索して頂けると・・・。

度々ありがとうございます。。
やはりPromiseの部分ですか…。

非常に助かりました!

 

追記
やりたい動作が無事できました。
助言いただきありがとうございます!