🐚

go-shopifyで出品中の商品の情報のCRUDを行う検証

2021/12/13に公開

はじめに

目標

Shopify Admin API を go 言語で操作するための非公式ライブラリである。
API へのアクセスのみでも同様のことが行えるが、簡略化するため今回はgo-shopifyを用いて出品中の商品の情報の操作を行う。

bold-commerce/go-shopify

前提

商品の情報を操作するProductのみの検証を行う

Shopify 上でプライベートアプリケーションの作成を行い、APIキーパスワードの取得を行っている。

実装

初期化

API キーとパスワードを用いて使う場合は、goshopify.NewClient()の第 3 引数は空白にする。

app := goshopify.App{
    ApiKey:   "APIキー",
    Password: "パスワード",
}
client := goshopify.NewClient(app, "ショップネーム", "")

商品リストの取得

itemList, err := client.Product.List(nil)
if err != nil {
	log.Panicln(err)
}

for _, i := range itemList {
	fmt.Println(i.Title)
}

プロダクト ID を指定して情報を取得する

var op interface{}

var productID int64
productID = 7255225860258

item, err := client.Product.Get(productID, op)
if err != nil {
	log.Panicln(err)
}

fmt.Println(item.Title)

プロダクト ID を指定して情報の更新を行う

Productの構造体を渡す。
渡していない情報は上書きされなかった。

var p goshopify.Product
p.ID = 7254096478370
p.Title = "test"

_, err := client.Product.Update(p)
if err != nil {
	log.Panic(err)
}

プロダクト ID を指定して商品の登録を行う

アクティブ状態で作成されるので注意

var p goshopify.Product
p.Title = "test"

_, err := client.Product.Create(p)
if err != nil {
	log.Panic(err)
}

プロダクト ID を指定して商品の削除を行う

var productID int64
productID = 7255225860258

err := client.Product.Delete(productID)
if err != nil {
	log.Panicln(err)
}

Product 構造体

type Product struct {
	ID                             int64           `json:"id,omitempty"`
	Title                          string          `json:"title,omitempty"`
	BodyHTML                       string          `json:"body_html,omitempty"`
	Vendor                         string          `json:"vendor,omitempty"`
	ProductType                    string          `json:"product_type,omitempty"`
	Handle                         string          `json:"handle,omitempty"`
	CreatedAt                      *time.Time      `json:"created_at,omitempty"`
	UpdatedAt                      *time.Time      `json:"updated_at,omitempty"`
	PublishedAt                    *time.Time      `json:"published_at,omitempty"`
	PublishedScope                 string          `json:"published_scope,omitempty"`
	Tags                           string          `json:"tags,omitempty"`
	Options                        []ProductOption `json:"options,omitempty"`
	Variants                       []Variant       `json:"variants,omitempty"`
	Image                          Image           `json:"image,omitempty"`
	Images                         []Image         `json:"images,omitempty"`
	TemplateSuffix                 string          `json:"template_suffix,omitempty"`
	MetafieldsGlobalTitleTag       string          `json:"metafields_global_title_tag,omitempty"`
	MetafieldsGlobalDescriptionTag string          `json:"metafields_global_description_tag,omitempty"`
	Metafields                     []Metafield     `json:"metafields,omitempty"`
	AdminGraphqlAPIID              string          `json:"admin_graphql_api_id,omitempty"`
}

参考

go-shopify/product.go
https://github.com/bold-commerce/go-shopify/blob/master/product.go

GitHubで編集を提案

Discussion