新規投稿
フォローする

レコードコメント取得の再帰処理

以前レコードにコメントを保存する方法について質問していた者です。

https://developer.cybozu.io/hc/ja/community/posts/4405529245977

その後無事にコメントを取得、レコードへの貼り付けができたのですが、レコードのコメントは一度に10件しか入らないため、再帰処理を追加しようとしています。

下記を参考にしているのですが、offsetが理解できていないのかうまくいきません。

https://developer.cybozu.io/hc/ja/articles/208220646

下記内容でJavaScriptを作成しているのですが、どの部分を改善すれば再帰処理が行えるのかアドバイスを頂けますと幸いです。

(function() {
'use strict';

function recordComments(event) {
if(event.record.検収.value==='完了' && event.record.コメント取得.value==='未取得'){

//コメント情報の取得
const apiURL=kintone.api.url('/k/v1/record/comments.json');
const getParams={
app:kintone.app.getId(),
record:event.record.レコード番号.value,
order:"asc",
};
kintone.api(apiURL,'GET',getParams,getComments,getError);
event.record.コメント取得.value='取得済み';
}
return event;

//コメントの取得に成功したらデータをテーブルに入力する処理(If内に書くとエラーが出るのでここに書いています)
function getComments(resp){
console.log(resp);
  //本来はテーブルにデータを入力する処理を書いていますが、再帰処理確認のためにconsole.logに変更しています。
}
function getError(error){
console.log(error);
}
}
kintone.events.on('app.record.edit.show',recordComments);
})();

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

0

2件のコメント

Avatar
juridon

このパラメータにoffsestを仕込んで、取り込んでコメント数分offsetをずらしてまた呼べば良いと思います

const getParams={
app:kintone.app.getId(),
record:event.record.レコード番号.value,
order:"asc",
};

(サンプルコードの記述)
var params = {
'app': appId,
'record': recordId,
'offset': offset
};

offsetというのはどこから取得するか?ということです。
最初はoffset:0で、10件取得してまだコメントが残っていたら
次はoffsetは10になります。まだ残っていたらその次のoffsetは20。
それを繰り返す再帰処理です。

一度、
https://developer.cybozu.io/hc/ja/articles/208220646
こちらのサンプルコードが動くアプリを作って、
アプリもコードも本番のアプリに近づけていってみるというのはいかがでしょうか?

0
Avatar
murakata

juridon

いつもありがとうございます。

いただいたアドバイスを念頭に再度コードを書き直したところ再帰処理ができました!

どうやら間に

event.record.コメント取得.value='取得済み';
}
return event;

を入れていたことがややこしくしてしまっていたようです…

本当にありがとうございました。

1
サインインしてコメントを残してください。