シナリオを使用して、購入した商品を一括アップロード
0
最近のプロジェクトでは、多くの購入品がアップロードされ、表いっぱいになっています.普段、商品情報が少ない場合は、手動で一つ一つ追加します.しかし、今は効率を高めるために、スクリプトをカプセル化し、大量にアップロードし、両手を解放し、一労永逸しなければならない.誰が私をプログラム猿と呼んでいるのだろうか.
いつものように、googleは既成の解決策があるかどうかを調べます.ネット上の関連情報は少なく、fastlateのプラグインspaceshipを見つけて、商品情報をアップロードすることができます.
これまでfastlateについても知っていましたが、fastlateを使用すると、継続的な統合、自動パッケージ化、サーバへのアップロードなど、多くのことをすることができます.今日はfastlateというspaceshipプラグインをパッケージします.
fastlateはRubyスクリプトを用いて開発した.Rubyスクリプトは簡単で学びやすく、コードがきれいに書かれているので、このようなことに適しています.
考えを言います.
まずexcel表を解析して、表の1行は1つの商品を代表します.商品の情報には、商品id、商品名、金額、商品情報、審査備考、商品スクリーンショットが含まれます.
Excelテーブルの固定フォーマット解析を事前に定義しておくとエラーは発生しません.
spaceshipを呼び出して商品情報をitunesconnectに一つ一つ伝えます.
各Appは個別のディレクトリで、アカウント情報、App情報、excelテーブル、商品のスクリーンショットを含む関連情報を準備します.
環境構築:
1.Xcodeツールのインストール:
3.excel解析ライブラリrooをインストールする:
コード・セクション:
まずexcelテーブルを解析する方法を見てみましょう.
Rubyには既存のexcel解析ライブラリ:rooがあり、rooをインストールすると使用を開始できます.先にrooをインポート:
ファイルを開き、最初のテーブルを選択します.
各セルの内容を取り出すには、セルは座標で表されるので、行の合計数と列の合計数を取得してから反復します.表の行と列のカウントは1から始まることを覚えておいてください.ここではまず表のタイトルを出して、keyとして、セルの内容をvalueとして、各行の内容を辞書として、表全体のフォーマットは1つの配列にいくつかの辞書をネストします.
これで表の内容が解析されresultに保存されます.
次にitunesconnectにコンテンツを転送します.spaceshipをインポートするには:
開発アカウントにログインして、以下のコードを初めて実行すると、コンソールにアカウントとパスワードを入力できます.
bundle idを使用して、商品を追加するappを検索します.
商品の作成を開始し,表に解析したばかりの配列を反復して順次呼び出す.
こちらtypeは商品タイプで、消耗型、購読型などがありますが、ここではすべての商品が消耗型であると仮定します.
product idは、bundle idと商品idで構成されているので、表に記入するときは後ろの半分の商品idだけを記入してください.コードには自動的に前のbundle idが加算されます.
正常に作成すると次のタスクが実行され、作成に失敗すると例外が取得され、実行が続行されます.一般的に捕獲された異常は,既にその商品が存在しているため,繰り返し作成できないことである.また、レビューコメントや商品のスクリーンショットの記入が正しくなくても異常です.
get_Tierは商品の価格等級を取得する方法で、私たちが入力した価格をitunesconnectの価格等級に変換します.
価格の等級はとても多くて、よく使うのはこのいくつかだけで、後で使ってからゆっくりと広げます.
商品情報を修正する原理は、修正した表をもう一度走ることです.注意product idは変更できません:
完全なコードと使い方はIAPProductToolをご覧ください.
テキストリンク
最近のプロジェクトでは、多くの購入品がアップロードされ、表いっぱいになっています.普段、商品情報が少ない場合は、手動で一つ一つ追加します.しかし、今は効率を高めるために、スクリプトをカプセル化し、大量にアップロードし、両手を解放し、一労永逸しなければならない.誰が私をプログラム猿と呼んでいるのだろうか.
いつものように、googleは既成の解決策があるかどうかを調べます.ネット上の関連情報は少なく、fastlateのプラグインspaceshipを見つけて、商品情報をアップロードすることができます.
これまでfastlateについても知っていましたが、fastlateを使用すると、継続的な統合、自動パッケージ化、サーバへのアップロードなど、多くのことをすることができます.今日はfastlateというspaceshipプラグインをパッケージします.
fastlateはRubyスクリプトを用いて開発した.Rubyスクリプトは簡単で学びやすく、コードがきれいに書かれているので、このようなことに適しています.
考えを言います.
まずexcel表を解析して、表の1行は1つの商品を代表します.商品の情報には、商品id、商品名、金額、商品情報、審査備考、商品スクリーンショットが含まれます.
Excelテーブルの固定フォーマット解析を事前に定義しておくとエラーは発生しません.
spaceshipを呼び出して商品情報をitunesconnectに一つ一つ伝えます.
各Appは個別のディレクトリで、アカウント情報、App情報、excelテーブル、商品のスクリーンショットを含む関連情報を準備します.
環境構築:
1.Xcodeツールのインストール:
xcode-select --install
2.fastlane:[sudo] gem install fastlane -NV
のインストール3.excel解析ライブラリrooをインストールする:
[sudo] gem install roo
Macシステム自体にRubyが付いているので、Winの場合は自分でインストールしてください.コード・セクション:
まずexcelテーブルを解析する方法を見てみましょう.
Rubyには既存のexcel解析ライブラリ:rooがあり、rooをインストールすると使用を開始できます.先にrooをインポート:
require 'roo'
ファイルを開き、最初のテーブルを選択します.
xlsx = Roo::Spreadsheet.open(path, extension: :xlsx)
sheet = xlsx.sheet(0)
各セルの内容を取り出すには、セルは座標で表されるので、行の合計数と列の合計数を取得してから反復します.表の行と列のカウントは1から始まることを覚えておいてください.ここではまず表のタイトルを出して、keyとして、セルの内容をvalueとして、各行の内容を辞書として、表全体のフォーマットは1つの配列にいくつかの辞書をネストします.
rows_count = sheet.last_row #
colunms_count = sheet.last_column #
titles = []
rows_count.times do |r|
#
if r == 0
colunms_count.times do |c|
res = sheet.cell(r + 1, c + 1)
titles << res
end
next
end
rows = {}
colunms_count.times do |c|
res = sheet.cell(r + 1, c + 1)
rows[titles[c]] = res # key , value
end
@result << rows
end
これで表の内容が解析されresultに保存されます.
次にitunesconnectにコンテンツを転送します.spaceshipをインポートするには:
require 'spaceship'
開発アカウントにログインして、以下のコードを初めて実行すると、コンソールにアカウントとパスワードを入力できます.
Spaceship::Tunes.login(account)
bundle idを使用して、商品を追加するappを検索します.
app = Spaceship::Application.find(bundle_id)
商品の作成を開始し,表に解析したばかりの配列を反復して順次呼び出す.
def create()
type = Spaceship::Tunes::IAPType::CONSUMABLE
@products.each do |product|
tier = get_tier(product['amount']) #
product_id = "#{@bundle_id}.#{product['id']}"
review_image_path = File::join(@path, "#{product['review_image']}.jpg")
abort("#review_image=#{review_image_path} not exist") unless File::exist?(review_image_path)
puts "#uploading ... product=#{product}"
begin
@app.in_app_purchases.create!( #
type: type,
versions: {
'zh-CN': {
name: product['name'],
description: product['desc']
}
},
reference_name: product['name'],
product_id: product_id,
cleared_for_sale: true,
review_notes: product['review_desc'], #
review_screenshot: review_image_path, #
pricing_intervals: [
{
country: "WW",
begin_date: nil,
end_date: nil,
tier: tier
}
]
)
puts "#upload success"
rescue Exception => error
puts "#upload failure, error=#{error}"
end
end
end
こちらtypeは商品タイプで、消耗型、購読型などがありますが、ここではすべての商品が消耗型であると仮定します.
product idは、bundle idと商品idで構成されているので、表に記入するときは後ろの半分の商品idだけを記入してください.コードには自動的に前のbundle idが加算されます.
正常に作成すると次のタスクが実行され、作成に失敗すると例外が取得され、実行が続行されます.一般的に捕獲された異常は,既にその商品が存在しているため,繰り返し作成できないことである.また、レビューコメントや商品のスクリーンショットの記入が正しくなくても異常です.
get_Tierは商品の価格等級を取得する方法で、私たちが入力した価格をitunesconnectの価格等級に変換します.
def get_tier(amount)
tier = {
6 => 1,
30 => 5,
50 => 8,
88 => 13,
98 => 15,
128 => 20,
198 => 30,
228 => 34,
288 => 46,
328 => 50,
548 => 57,
648 => 60
}
abort("#tier not exist when amount=#{amount}") unless tier[amount]
tier[amount]
end
価格の等級はとても多くて、よく使うのはこのいくつかだけで、後で使ってからゆっくりと広げます.
商品情報を修正する原理は、修正した表をもう一度走ることです.注意product idは変更できません:
def modify()
@products.each do |product|
product_id = "#{@bundle_id}.#{product['id']}"
tier = get_tier(product['amount'])
review_image_path = File::join(@path, "#{product['review_image']}.jpg")
abort("#review_image=#{review_image_path} not exist") unless File::exist?(review_image_path)
puts "#modify ... product=#{product}"
begin
purch = @app.in_app_purchases.find(product_id) #
e = purch.edit #
e.versions = {
'zh-CN': {
name: product['name'],
description: product['desc']
}
}
e.reference_name = product['name']
e.review_notes = product['review_desc']
e.review_screenshot = review_image_path
e.pricing_intervals = [
{
country: "WW",
begin_date: nil,
end_date: nil,
tier: tier
}
]
e.save!
puts "#modify success"
rescue Exception => error
puts "#modify failure, error=#{error}"
end
end
end
完全なコードと使い方はIAPProductToolをご覧ください.
テキストリンク