GetMyeBaySelling は、eBay の出品状況(Active / Sold / Unsold)を取得できる Trading API です。この記事では Active(現在出品中) の一覧を取得し、Google Apps Script(GAS)を使ってスプレッドシートへ自動出力する方法を紹介します。
日々の価格管理、在庫状況のチェック、出品データの集計の「基礎データ」を整える用途に適しています。
1. 使用する API:GetMyeBaySelling
GetMyeBaySelling は、以下のようなセラー向けのデータを取得できる Trading API です:
- ActiveList(出品中)
- SoldList(売れた商品)
- UnsoldList(売れ残り)
この記事では ActiveList のみ を対象とし、タイトル・ItemID・価格・Watch数・SKU(CustomLabel)といった基本情報を取得します
API Docs: GetMyeBaySelling Trading API
2. 事前準備
2-1. eBay Developer Program から取得するもの
- DevID
- AppID
- Auth’n’Auth Token
2-2. スプレッドシート側の準備
「設定」シートの以下のセルに認証情報を置きます:
| セル | 内容 |
|---|---|
| B4 | AppID |
| B5 | DevID |
| B6 | AuthToken |
出力先として「商品管理」 シートを用意します。2行目以降は毎回クリアされ、最新の Active 一覧が上書きされる構成です。
3. サンプルコード
以下のコードを Google Apps Script に貼り付けて使用できます。「設定」及び「商品管理」 シートを事前に用意しておけば、そのまま動作します。
サンプルコード(クリックして開く)
// 商品管理シート(Active 出力先)
var listsheet = SpreadsheetApp.getActive().getSheetByName('商品管理');
// 認証情報(setsheet から取得)
var setsheet = SpreadsheetApp.getActive().getSheetByName('設定');
var appid = setsheet.getRange(4, 2).getValue();
var devid = setsheet.getRange(5, 2).getValue();
var authtoken = setsheet.getRange(6, 2).getValue();
/**
* 出品中(Active)の一覧データを取得し、商品管理シートに出力する入口関数
*
* @return {void}
*/
function get_myebaydata() {
// 既存データのクリア(2 行目以降)
const last = listsheet.getLastRow();
if (last > 1) {
listsheet.getRange(2, 1, last - 1, 100).clearContent();
}
// Active データ取得
const activeData = getmySale();
// データがあれば出力
if (activeData.length > 0) {
listsheet
.getRange(2, 1, activeData.length, activeData[0].length)
.setValues(activeData);
}
}
/**
* eBay Trading API「GetMyeBaySelling」を実行し、
* 出品中(Active)の商品一覧を取得する。
*
* @return {Array<Array>}
* - [["Active", Title, ItemID, Price, WatchCount, SKU], ... ] の形式
*/
function getmySale() {
const url = 'https://api.ebay.com/ws/api.dll';
// API 呼び出し用ヘッダ
const headers = {
'X-EBAY-API-DEV-NAME' : devid,
'X-EBAY-API-APP-NAME' : appid,
'X-EBAY-API-CALL-NAME' : 'GetMyeBaySelling',
'X-EBAY-API-SITEID' : '0',
'X-EBAY-API-REQUEST-ENCODING' : 'XML',
'X-EBAY-API-COMPATIBILITY-LEVEL': '1119'
};
let outary = []; // 出力配列
let itmidary = []; // ItemID 重複チェック用
// 最大 10 ページ分取得(1ページ 200 件)
for (let page = 1; page <= 10; page++) {
// XML ペイロード
const xml =
'<?xml version="1.0" encoding="utf-8"?>' +
'<GetMyeBaySellingRequest xmlns="urn:ebay:apis:eBLBaseComponents">' +
'<RequesterCredentials>' +
'<eBayAuthToken>' + authtoken + '</eBayAuthToken>' +
'</RequesterCredentials>' +
'<ActiveList>' +
'<Sort>TimeLeft</Sort>' +
'<Pagination>' +
'<EntriesPerPage>200</EntriesPerPage>' +
'<PageNumber>' + page + '</PageNumber>' +
'</Pagination>' +
'</ActiveList>' +
'</GetMyeBaySellingRequest>';
// URLFetch オプション
const options = {
method: 'post',
contentType: 'application/xml',
headers: headers,
payload: xml
};
// API 実行
const responseText = UrlFetchApp.fetch(url, options).getContentText();
// <Item> で分割(0 はヘッダ)
const items = responseText.split('<Item>');
for (let i = 1; i < items.length; i++) {
const block = items[i];
// 各項目の抽出
let title = '';
let itemID = '';
let price = 0;
let watch = 0;
let sku = '';
try { title = block.split('<Title>')[1].split('</Title>')[0]; } catch (e) {}
try { itemID = block.split('<ItemID>')[1].split('</ItemID>')[0]; } catch (e) {}
try { price = block.split('<SellingStatus><CurrentPrice')[1].split('>')[1].split('<')[0]; } catch (e) {}
try { watch = block.split('<WatchCount>')[1].split('</WatchCount>')[0]; } catch (e) {}
try { sku = block.split('<SKU>')[1].split('</SKU>')[0]; } catch (e) {}
// ItemID の重複チェック
itmidary.push(itemID);
if (itmidary.indexOf(itemID) === itmidary.length - 1) {
outary.push([
"Active",
title,
itemID,
price,
watch,
sku
]);
}
}
}
return outary;
}
4. コードの処理概要
4-1. get_myebaydata() の流れ
get_myebaydata() は、次の処理を順番に実行します:
商品管理シートの 2 行目以降をクリアgetmySale()を呼び出して Active 一覧のデータを取得- 取得結果をシート 2 行目から書き出す
毎回実行することで、「常に最新状態の出品中一覧」を維持できる構成です。
4-2. getmySale() の流れ
getmySale() は eBay API に直接リクエストを送り、Active 出品一覧を取得します。
処理は次の通りです:
- 最大 10 ページ(1 ページ 200 件)を順に取得
- レスポンス XML を
<Item>単位で分解 - 以下 5つの値を抽出して配列へ格納:
- Title(商品名)
- ItemID
- CurrentPrice(現在価格)
- WatchCount(ウォッチ数)
- SKU(CustomLabel)
- ItemID の重複をチェックしながら結果配列に追加
最終的に、["Active", Title, ItemID, Price, WatchCount, SKU] の形式の 2 次元配列を返します。
5. 出力列の構成
スプレッドシートには次の形式で出力されます:
| 列 | 内容 |
|---|---|
| A | Active(固定) |
| B | タイトル |
| C | ItemID |
| D | 現在価格 |
| E | Watch数 |
| F | SKU(CustomLabel) |
6. GetMyeBaySelling で取得できるその他の項目
現在のサンプルコードでは取得していませんが、GetMyeBaySelling では以下のような情報も取得可能です。
セラーの分析や価格調整に役立つため、必要に応じてコードへ追加できます。
Item 情報
| 項目 | 内容 |
|---|---|
| PrimaryCategoryID | カテゴリ ID |
| ConditionID | コンディション(新品・中古など) |
| ListingType | FixedPrice / Auction など |
| ListingDuration | 出品期間(GTC、7日など) |
| Quantity | 在庫数 |
| QuantitySold | 販売済み数 |
時間情報
| 項目 | 内容 |
|---|---|
| StartTime | 出品開始日時 |
| EndTime | 出品終了日時(オークション等) |
| TimeLeft | 終了までの残り時間 |
7. まとめ
GetMyeBaySelling を利用することで、出品中一覧を自動で取得し、常に最新状態で管理できる仕組みを構築できます。GAS と組み合わせることで、毎日の価格管理・在庫チェック・販売分析の“土台となるデータ”を自動生成できる点が最大のメリットです。
さらに、カテゴリ ID やコンディション、出品期間といった追加項目を取得することで、より高度な分析や運用改善にも発展させられる柔軟性があります。eBay API とスプレッドシートを連携させることで、作業時間を削減し、判断の質を向上させる強力なワークフローを作ることができます。

