ワークフローの「申請データを取得する」を参考に、申請フォームごとに設定された申請番号をクエリの条件にて指定して、過去の申請データを取得したいと考えております。
下記のようなクエリーにて考えておりますが、意図する申請番号のデータが取得できません。
いろいろ調べておりますが、そもそも申請番号を指定してのワークフローデータの入手はできないのでしょうか。
申請番号を指定し申請済ワークフローの内容をGETしたいのですが、どなたかご教授いただけないでしょうか。
よろしくお願いいたします。
一応、ワークフローのデータはエラーなく取得できるのですが、指定した申請番号でない(かなり過去の)データとなります。
const resp = await fetch(
/g/api/v1/workflow/admin/requests? +
form=${GAROON_FORM_ID}&requestNumber=${encodeURIComponent(requestNumber)},
{
method: “GET”,
headers: {
“X-Requested-With”: “XMLHttpRequest”
}
}
);
ko_ji
(ko_ji)
2
こんにちは。
複数の申請データを取得するは、申請番号を指定しての申請データの取得はできないようです。
(申請番号を指定するパラメータが存在しないです。)
なので、rangeStartApprovedAt や rangeEndApprovedAt を利用して絞り込む必要があるかと思います。
「いいね!」 1
ko_ji 様
コメントありがとうございます。
やはり、申請番号を指定しての取得はできないのですね。
いろいろ調べてはいたなかでgaroonの仕様上できないような記述がありましたが、ユーザーからの要望としては多いように思えるのですが残念です。
ありがとうございました。
ご教授お願いできませんでしょうか。
因みに、申請番号(requestNumberが例2025-256)の上4桁=西暦年として2025年のデータのみ抽出したいと考えた場合rangeStartApprovedAt等を下記でGETしても0件で返ってくるのは、記述の仕方が悪いのでしょうか?(2025年の承認済は少なくとも0件ではない)
const year = parseInt(requestNumber.slice(0, 4), 10);
const rangeStartApprovedAt = `${year - 1}-12-31T15:00:00Z`;
const rangeEndApprovedAt = `${year}-12-31T14:59:59Z`;
const resp = await fetch(
`/g/api/v1/workflow/admin/requests?` +
`form=${GAROON_FORM_ID}` +
`&rangeStartApprovedAt=${encodeURIComponent(rangeStartApprovedAt)}` +
`&rangeEndApprovedAt=${encodeURIComponent(rangeEndApprovedAt)}`,
{
method: "GET",
headers: {
"X-Requested-With": "XMLHttpRequest"
}
}
);
ko_ji
(ko_ji)
5
申請データを取得する REST API は、申請データが多い場合、1度のリクエストで期待する申請データを取得できない場合があるようです。
上記を確認する方法として、レスポンスの hasNext が true の場合、取得できていない申請データが存在しています。
リクエスト実行時に offset パラメーターを指定することで、取得する申請データをスキップすることが可能です。
なので、レスポンスの hasNext が true の場合、offset に limit で指定した件数(デフォルト 100件)を加えて、API を繰り返し実行することで、期待する申請データも取得できるかと思います。
※ limit パラメーターに 1,000 を指定することでも、
期待する申請データを取得可能な場合があります。
ko_ji様
重ねてのコメントありがとうございました。
ご指摘のhasNext は true が帰っております。
因みに、日時指定のrangeStartApprovedAt及びrangeEndApprovedAtを下記のようにコメントアウトし実行したところ画像のような結果となり、やはり日時の書き方や内容が問題のような気がしております。
// &rangeStartApprovedAt=${encodeURIComponent(rangeStartApprovedAt)} +
// &rangeEndApprovedAt=${encodeURIComponent(rangeEndApprovedAt)} +
&limit=800 +
&offset=1,
rangeStartApprovedAt及びrangeEndApprovedAtを条件にすると0件になってしまいます。