メインコンテンツにスキップ

お届け予定日組み込み時のJavaScriptファイル取扱説明書

対応者:佐藤啓太
3か月以上前に更新


スクリプトの読み込み

CDN URL

お届け予定日算出スクリプトは、ストアごとに生成されたJavaScriptファイルとしてCDNから提供されます。

<https://script>.rcmr.io/eta/{ストアID}/display_behavior.js

環境

ドメイン

本番環境

script.rcmr.io

HTMLでの読み込み方法

<script src="<https://script.rcmr.io/eta/{ストアID}/display_behavior.js>"></script>

ストアID は管理画面で確認できます。UUID形式(例: 019a9c28-dc76-728d-a626-74375f5e38f8)で提供されます。

設定 > 配送追跡 > お届け予定日 > 商品単位のお届け予定日 > デフォルトのお届け予定日設定をクリックした画面のURL欄の下記赤枠部分がストアIDとなります。

読み込み位置

スクリプトは <head> タグ内、または <body> タグの末尾で読み込むことを推奨します。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<!-- 他のmetaタグ、CSSなど -->

<!-- お届け予定日算出スクリプト -->
<script src="https://script.rcmr.io/eta/{ストア固有のID}/display_behavior.js"></script>
</head>

<body>
<!-- ページコンテンツ -->

<script>
// スクリプト読み込み後、estimateTimeOfArrival が利用可能
async function showDeliveryDate() {
const result = await window.recustomer.estimateTimeOfArrival({
inventory: 10,
tags: [],
categories: [],
customAttribute1: [],
customAttribute2: [],
postalCode: '1000001'
});

console.log(result);
}

showDeliveryDate();
</script>
</body>
</html>

CDNの更新タイミング

スクリプトファイルは以下のタイミングで自動的に再生成・更新されます:

更新トリガー

説明

お届け予定日の条件設定を更新したとき

管理画面で条件(在庫数、タグ、カテゴリ等)や出荷リードタイムを変更した場合

倉庫設定を更新したとき

営業日、締め時間、カスタムスケジュール(年末年始休業など)を変更した場合

注意事項

  • CDNの更新は数分以内に反映されます

  • ブラウザキャッシュにより、エンドユーザーへの反映が遅れる場合があります

  • 設定変更後、動作確認を行う際はブラウザのキャッシュをクリアしてください

estimateTimeOfArrival 関数 利用ガイド

概要

window.recustomer.estimateTimeOfArrival は、商品情報と配送先郵便番号をもとに、お届け予定日を算出するJavaScript関数です。

重要: この関数は async 関数 であり、Promise を返します。呼び出し時は await または .then() を使用してください。

基本的な使い方

// async / await を使用する場合
const result = await window.recustomer.estimateTimeOfArrival({
inventory: 10, // 在庫数(number | null)
tags: ["新作", "セール"], // 商品タグ(string[])
categories: ["衣類"], // 商品カテゴリ(string[])
customAttribute1: [], // カスタム属性1(string[])
customAttribute2: [], // カスタム属性2(string[])
postalCode: "1000001" // 配送先郵便番号(string)
});

// --------------------------------------------

// .then() を使用する場合
window.recustomer
.estimateTimeOfArrival({
inventory: 10,
tags: ["新作", "セール"],
categories: ["衣類"],
customAttribute1: [],
customAttribute2: [],
postalCode: "1000001"
})
.then((result) => {
console.log(result);
});

引数

引数名

必須

説明

備考

inventory

number

いいえ

商品の在庫数

省略時はnullを設定

tags

string[]

いいえ

商品に付与されたタグの配列

該当なしの場合は[]を設定(引数自体は必須)

categories

string[]

いいえ

商品のカテゴリ配列

該当なしの場合は[]を設定(引数自体は必須)

customAttribute1

string[]

いいえ

カスタム属性1の配列

該当なしの場合は[]を設定(引数自体は必須)

customAttribute2

string[]

いいえ

カスタム属性2の配列

該当なしの場合は[]を設定(引数自体は必須)

postalCode

string

はい

配送先郵便番号(ハイフンあり/なし両対応)

必ず指定が必要

戻り値

成功時: 特定日(type: 'single')

{
type: "single",
daysFromNow: {
value: 3 // 現在日から3日後にお届け
}
}

成功時: 期間(type: 'range')

{
type: "range",
daysFromNow: {
min: 2, // 最短2日後
max: 5 // 最長5日後
}
}

失敗時: テキスト(type: 'text')

{
type: "error",
error: "エラーコード",
args: {
/* 呼び出し時の引数 */
}
}

エラーコード一覧と対応方法

エラーコード

発生条件

対応方法

Postal code is not specified.

postalCodeが未指定または空

郵便番号を指定してください

UnexpectedError

配送リードタイムテーブルが未読み込み、郵便番号が配送テーブルに存在しない、または内部エラー

下記「トラブルシューティング」参照

実装例

// async 関数内で使用する場合
async function displayDeliveryDate() {
try {
const result = await window.recustomer.estimateTimeOfArrival({
inventory: productInventory,
tags: productTags,
categories: productCategories,
customAttribute1: [],
customAttribute2: [],
postalCode: customerPostalCode
});

switch (result.type) {
case "single": {
const deliveryDate = new Date();
deliveryDate.setDate(
deliveryDate.getDate() + result.daysFromNow.value
);

console.log(
`お届け予定日: ${deliveryDate.toLocaleDateString("ja-JP")}`
);
break;
}

case "range":
console.log(
`お届け予定: ${result.daysFromNow.min}〜${result.daysFromNow.max}日後`
);
break;

case "text":
console.log(result.text);
break;

case "error":
console.error(`エラー: ${result.error}`, result.args);
// お届け予定日を非表示にするなどのフォールバック処理
break;
}
} catch (error) {
// CDN読み込み失敗時などの例外処理
console.error("配送日の計算に失敗しました:", error);
}
}
js
コードをコピーする
// .then() を使用する場合
function displayDeliveryDateWithThen() {
window.recustomer
.estimateTimeOfArrival({
inventory: productInventory,
tags: productTags,
categories: productCategories,
customAttribute1: [],
customAttribute2: [],
postalCode: customerPostalCode
})
.then((result) => {
// result.type に応じた処理
console.log(result);
})
.catch((error) => {
// CDN読み込み失敗時などの例外処理
console.error("配送日の計算に失敗しました:", error);
});
}

トラブルシューティング

「UnexpectedError」が発生する場合

  • 郵便番号が配送テーブルに存在しない

    • 入力された郵便番号が日本国内の有効な郵便番号か確認してください

    • 郵便番号のフォーマット(数字のみ7桁)を確認してください

  • 営業日計算でエラーが発生した

    • 内部的な計算エラーの可能性があります

    • 開発者に問い合わせてください

Promise が reject される場合

estimateTimeOfArrival は内部で弊社独自のCDNの読み込みを待機します。CDNの読み込みに失敗した場合、Promise が reject されます。

try {
const result = await window.recustomer.estimateTimeOfArrival({
// パラメータ
// ...
});
} catch (error) {
// CDN読み込み失敗時の処理
console.error(
'配送データの読み込みに失敗しました:',
error.message
);

// フォールバック: お届け予定日を非表示にする等
}

注意事項

  • この関数は async 関数 であり、Promise を返します。必ず await または .then() で結果を取得してください

  • この関数はクライアントサイド(ブラウザ)でのみ動作します

こちらの回答で解決しましたか?