Liquid、JavaScriptなどに関する質問
タイトルの通り、admin rest apiを利用して customer metafieldを更新したいです。
エンドポイント | https://{{ shop name }}/admin/api/2023-01/customers/{{ customer.id }}.json |
Webhookのバージョン | 2023-01 |
Admin APIアクセススコープ | write_customers、 read_customers |
const requestHeaders = { 'X-Shopify-Access-Token': accessToken, 'Content-Type': 'application/json', }; const Payload = { customer: { first_name, last_name, metafields: [ { key: metafieldKey_01, value: newValue, value_type: 'single_line_text_field', namespace: metafieldNamespace_01, }, { key: metafieldKey_02, value: newValue, value_type: 'single_line_text_field', namespace: metafieldNamespace_02, }, ], }, }; const updateCustomer = (payload) => { fetch(ApiUrl, { method: 'PUT', headers: requestHeaders, body: JSON.stringify(payload), }) .then((response) => response.json()) .then((data) => console.log(data)) .catch((error) => console.error(error, payload)); };
SIN_88 様
お世話になっております。
customerのメタフィールドの更新ですが、以前私もやったことがありました。
そのとき、メタフィールド内の更新できるときとできないときがありましたので、ご参考までに。
・更新できるとき
→メタフィールドが空のとき、更新してデータをいれることができました。
・更新できないとき
→メタフィールドになにかの値が入っているとき、更新できませんでしたが、200のレスポンスが返ってきました。
直接Shopifyに確認はしておりませんが、上記のような仕様かなと思いました。
この仕様からメタフィールドが使えなかったので、customer.noteとcustomer.tagsで代用しました。
なにかヒントになれば幸いです。
株式会社フルバランス様
ご返信ありがとうございます!
ご回答の通り最初からの状態でAPIを叩いたところ確かに更新ができ、二度目はできない状態になりました。
こちらの仕様の旨よくわかりませんが現状理解いたしました。
ありがとうございました!
最近解決したので、返信させていただきます。
メタフィールドを作成すると、ユーザー x メタフィールド ごとに固有のIDが生成されるので、それを一緒に送ると更新されました。
注意点は、メタフィールドの定義IDではなく、各ユーザーに紐づいたメタフィールドIDになります。
このIDを画面上で確認するのは難しいので、liquid などでユーザーのメタフィールドを表示させれて合わせてIDを出すとわかるかと思います。
{
id: ${number}
key: metafieldKey_02,
value: newValue,
value_type: 'single_line_text_field',
namespace: metafieldNamespace_02,
},
Shopifyペイメント決済サービスを利用していて、ストアの管理画面の通知セクションに突然「Shopifyペイメントの使用を継続するために必要な情報」というバナーメッセージが表示さ...
By Mirai Dec 3, 2023すべてのShopifyアカウントはデフォルトではmyshopify.comのURLと関連付けられており、これはアカウント設定時に使用したビジネス名に基づいて作成されます。しかし、オ...
By Nina_13 Nov 26, 2023このトピックは英語版コミュニティの投稿:Shopify Web Pixel Manager Sandbox FAQの日本翻訳です。
By Mirai Nov 19, 2023