取引一覧取得APIでの日付エラーについて
下記のようにクエリパラメータを指定し、取引一覧(https://www1.smaregi.dev/apidoc/#operation/getTransaction)を取得しようとしたら次のようなエラーが出ました。
クエリパラメータ:?limit=1000&sort=transactionHeadId&transaction_date_time-from=2024-08-13T00:00:00+09:00&transaction_date_time-to=2024-08-13T23:59:59+09:00
[transaction_date_time-from]は日付形式(YYYY-MM-DDTHH:mm:ss+XX:XX, ISO 8601)が正しくありません"
どちらの部分を改善したらよろしいでしょうか?
答え
@Kawazura
APIクライアントツールなどでリクエストを実施されている場合、クエリパラメーターの値が適切にURLエンコードされていない可能性がございます。
ご記載いただいたクエリパラメーター「transaction_date_time-from」と「transaction_date_time-to」の値をURLエンコードしていただき、リクエストエラーが解消されるかお試しくださいませ。
@スマレジ滝口
ご回答いただきありがとうございます。
Google Apps Scriptを用いて作成しており、下記コードでURLエンコードをしているつもりだったのですが、エンコード前後で特に変化はありませんでした。
エンコードが正しく行われている場合はどのような形式になるのでしょうか?
【URLを作成する部分のコード】
let url = 'https://api.smaregi.jp/' + contractId + '/pos/transactions?';
for (let key in queryParameters) {
if (queryLists.includes(key)) url += key + "=" + queryParameters[key] + "&";
}
url = url.slice(0, -1);
Logger.log(url)
url = encodeURI(url);
【queryParametersの中身】
{
limit: "1000",
sort: "transactionHeadId",
"transaction_date_time-from": "2024-08-13T00:00:00+09:00",
"transaction_date_time-to": "2024-08-13T23:59:59+09:00"
}
【エンコード前のURL】
https://api.smaregi.jp/[contractId]/pos/transactions?limit=1000&sort=transactionHeadId&transaction_date_time-from=2024-08-13T00:00:00+09:00&transaction_date_time-to=2024-08-13T23:59:59+09:00
【エンコード後のURL】
https://api.smaregi.jp/[contractId]/pos/transactions?limit=1000&sort=transactionHeadId&transaction_date_time-from=2024-08-13T00:00:00+09:00&transaction_date_time-to=2024-08-13T23:59:59+09:00
@Kawazura
ご記載いただいたエンコード後のクエリパラメーターを確認したところ、「:」や「+」などの記号がエンコードされていないようです。
クエリパラメーターのエンコードに使用されている関数が適切か、一度ご確認いただけますでしょうか。