公式のサポートを見てもよくわからずいろいろ試したらできたのでメモとして。
なんのことはなく正規の方法でしかない、できるけどやらない方がいい、という類のものかもしれません。
[追記:2021.7.15]
アプリを使わずにある程度の範囲(段階的に拡張予定?)のメタフィールドがShopifyのダッシュボードから操作可能になりました。
この件に伴い内部のデータ構造が変わるため当記事は今後古い情報となります。読まれる方は留意ください。
OS2.0対応テーマでの利用に関して
[追記:2022.1.25]
上記で少し触れられてもいますが、ストア管理画面の「設定>メタフィールド」の画面で「定義のないメタフィールド」として登録されます。
OS2.0対応ストアにてカスタマイズで操作可能な状態で用いるためには、CSVをインポートした後に管理画面の「設定>メタフィールド」で「定義を追加する」ボタンを押す作業が必須になると思われます。
つまり、以前のようにMatrixifyのみで新規登録を完結することはできません。
もちろん編集は今まで通り可能ですし、未定義状態(OS2.0より前の形式)での登録も可能です。
実現したいこと
- Shopify で Matrixify(旧:Excelify) を使う
- CSVファイルのみで、新規でカスタムフィールド作成、または既存の項目を編集する
注意点は以下の通り。
- 単なる文字列のみが入ったカスタムフィールドのみを想定
- 具体的には Metafields Guru が設定できる範囲のもの
上記は単に私が試せている範囲だからというだけですが、画像などアップロードが必要なものに関しては商品CSVでの登録を諦めて素直に Custom Fields を使う必要があるのかもしれません。
概要
- ファイル名を以下の何かにする(例外あり/一部しか検証できていない/大文字小文字の区別はない模様)
Products / Smart Collections / Custom Collections / Customers / Discounts / Draft Orders / Orders / Pages / Blog Posts / Redirects / Shop - CSVファイルに項目名と値を記述
- Matrixify(旧:Excelify) でインポート
前提
- Metafield Namespace: hoge
- Metafield Key: fuga
- Metafield Value: text
- hoge,fuga,textはそれぞれ任意の文字列。 Metafield Value の値である text が出力される。
以降は上記を前提とします。
なお、Namespaceに設定する文字列は3文字以上が必要で、2文字以下の場合はインポートできないため注意が必要です。
CSVには以下のように、最低上下2行を記載します。
- 最上段に、Metafield: hoge.fuga [string]というように記述
- その下の欄に、出力したい値として Metafield Value の text を記述
[string]は、入力する値を文字列だと指定する意味ですが、他にも数値とJSONがあり、それぞれ以下のように記載ます。
//文字列
Metafield: hoge.fuga [string]
//数値
Metafield: hoge.fuga [integer]
//JSON
Metafield: hoge.fuga [json_string]
カスタムフィールドの追加対象を決める
- CSVのファイル名で、カスタムフィールドの追加対象を決めることができる
- 規程された名称以外を使うとエラーになるが、内部の項目名やデータに過不足がなければ、任意のファイル名でもインポートできる(商品csvで確認)
調査不足とMatrixify(旧:Excelify)しか使っていないので、このアプリ専用の機能なのか、それとも Shopify のシステムなのかわかりませんが、以下のように公式に書かれています。
- Recognized sheet names
- Products
- Smart Collections
- Custom Collections
- Customers
- Discounts
- Draft Orders
- Orders
- Pages
- Blog Posts
- Redirects
- Shop
Sheets must be named precisely as that – also big/small letters matter, so be sharp when giving those names, or better just use the exported file, or the template.
All the other sheets are ignored, so you can keep your reference data sheets also in the same file.
Supported sheet names: Products, Smart Collections, Custom Collections, Customers, Discounts, Draft Orders, Orders, Pages, Blog Posts, Redirects, Shop.
カスタムフィールドの出力方法
登録したカスタムフィールドの値を出力するには以下のように記載します。
{% comment %} namespaceにhoge、キーにfugaを設定したと想定 {% endcomment %}
{% comment %} Shop.csvで店自体に対して登録した場合 {% endcomment %}
{{ shop.metafields.hoge.fuga }}
{% comment %} Products.csvで商品に対して登録した場合 {% endcomment %}
{{ product.metafields.hoge.fuga }}
カスタムフィールドの確認方法
CSVで設定した場合、管理画面から直接カスタムフィールドの値を確認する方法がありません。
確認したい場合は以下の Metafields Guru などのアプリを使うことで確認できます。
参考
補足
- 通常のインポート画面ではインポートできない
-
You can’t. Custom metafields are not supported via the product CSV import option in the Admin.
フォーラムでは上記のように書かれており、カスタムフィールドを記述したCSVファイルはインポートできない。
実際に試したが、カスタムフィールドに対応する項目が認識されず、不正な項目として無視された。
インポート時に項目の名称を適切なものに変更できるテキストリンクが出現するが、そこから状態を確認することもできる。
- Page.csvの補足
-
- Page.csvはTitleがあれば設定可能だが、同一タイトルが存在する可能性を考えるとHandleも追加した方が良い。同一TitleのHandleには「-1」がつくので区別できる。
- HandleはTitleに設定した文言がそのまま使われる。そのため日本語で設定されてしまう場合もある。ユニークなのはID。
- Product.csvの補足
-
- Image Srcで指定して画像を取得する際、IPは前半は固定で後半は変化、ホスト名は前半が変化で後半が一定になる模様。
ホスト名後半がbc.googleusercontent.comのため、恐らくGoogleのサービスが使われている。
ユーザーエージェントはMozilla/5.0 (compatible; Shopify Webfile Service; +http://www.shopify.com/contact)で固定の模様。
- Image Srcで指定して画像を取得する際、IPは前半は固定で後半は変化、ホスト名は前半が変化で後半が一定になる模様。
- CSVを使った方法では、カスタムフィールドでShop自体に画像を追加できない
-
調べた範囲では、CSVでShop自体に画像は追加できない。
具体的には、管理画面左下の「設定 > ファイル」で移動できる画像のアップロード画面への登録はできない。
この件はShopifyのサポートに確認済。
- Matrixify(旧:Excelify) とファイル名
-
- ファイル名に日本語が含まれていてもインポート可能
- ファイル名が長いとエラーになる
結び
カスタムフィールドを含めたデータ入力に関しては、CSVと Matrixify(旧:Excelify) でいろいろできそうです。
2人がこの記事を評価
役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。
連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。