FROM CACHE - jp_header
このコミュニティはピアツーピアサポートに移行しました。Shopify サポートは今後、このコミュニティへのサービスを提供いたしません。これからもぜひ、他のマーチャントやパートナーとつながり、サポートし合い、経験を共有してください。 当社の行動規範に違反する行動や削除を希望するコンテンツがありましたら、引き続きご報告ください

admin rest apiを利用して customer metafieldを更新したい

解決済

admin rest apiを利用して customer metafieldを更新したい

SIN_88
Shopify Partner
4 0 0

タイトルの通り、admin rest apiを利用して customer metafieldを更新したいです。

レスポンスは200で返ってきていますが、レスポンスのオブジェクトにもmetafieldsは含まれていませんでした。
また、下記のエンドポイントにも臨むmetafiledが取得できません。
https://{{ shop name }}/admin/api/2023-01/metafields.json
 下記エンドポイントにてupdateを試みたのですが、更新ができませんでした。
なにか設定などが必要になるでしょうか。
どうぞよろしくお願いします。
 
エンドポイント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));
};
1 件の受理された解決策

Tomoyuki_K
Shopify Partner
38 11 31

成功

最近解決したので、返信させていただきます。

メタフィールドを作成すると、ユーザー x メタフィールド ごとに固有のIDが生成されるので、それを一緒に送ると更新されました。

注意点は、メタフィールドの定義IDではなく、各ユーザーに紐づいたメタフィールドIDになります。

 

このIDを画面上で確認するのは難しいので、liquid などでユーザーのメタフィールドを表示させれて合わせてIDを出すとわかるかと思います。

 

        {
          id: ${number}
          key: metafieldKey_02,
          value: newValue,
          value_type: 'single_line_text_field',
          namespace: metafieldNamespace_02,
        },

 

元の投稿で解決策を見る

3件の返信3

株式会社フルバランス
Shopify Partner
1627 578 753

SIN_88 様

 

お世話になっております。

customerのメタフィールドの更新ですが、以前私もやったことがありました。

そのとき、メタフィールド内の更新できるときとできないときがありましたので、ご参考までに。

 

・更新できるとき

→メタフィールドが空のとき、更新してデータをいれることができました。

 

・更新できないとき

→メタフィールドになにかの値が入っているとき、更新できませんでしたが、200のレスポンスが返ってきました。

 

直接Shopifyに確認はしておりませんが、上記のような仕様かなと思いました。

この仕様からメタフィールドが使えなかったので、customer.noteとcustomer.tagsで代用しました。

 

なにかヒントになれば幸いです。

株式会社フルバランス
Shopify専門のEC成長支援会社です。ストアの新規構築から運用や改善のサポートなどShopifyに関する幅広いサービスを行なっております。
ECの技術・実務・成長、お悩みのことがあれば、お気軽にご相談ください。
『つくる人、売る人の成長と成功を最大化する。』 株式会社フルバランス
SIN_88
Shopify Partner
4 0 0

株式会社フルバランス様

 

ご返信ありがとうございます!

ご回答の通り最初からの状態でAPIを叩いたところ確かに更新ができ、二度目はできない状態になりました。

こちらの仕様の旨よくわかりませんが現状理解いたしました。

 

ありがとうございました!

Tomoyuki_K
Shopify Partner
38 11 31

成功

最近解決したので、返信させていただきます。

メタフィールドを作成すると、ユーザー x メタフィールド ごとに固有のIDが生成されるので、それを一緒に送ると更新されました。

注意点は、メタフィールドの定義IDではなく、各ユーザーに紐づいたメタフィールドIDになります。

 

このIDを画面上で確認するのは難しいので、liquid などでユーザーのメタフィールドを表示させれて合わせてIDを出すとわかるかと思います。

 

        {
          id: ${number}
          key: metafieldKey_02,
          value: newValue,
          value_type: 'single_line_text_field',
          namespace: metafieldNamespace_02,
        },