Amazonビジネスレポートと広告キャンペーンレポートを自動化するために

Amazonビジネスレポートと広告キャンペーンレポートを自動化するために、Google Apps Script (GAS) を使用してスプレッドシートに日毎のASIN別レポートを更新する方法を紹介します。


### 概要

- **目的**: Amazonビジネスレポートと広告キャンペーンレポートを一括で取得し、Googleスプレッドシートに自動更新する。

- **使用ツール**: Google Apps Script (GAS)

- **必要なもの**:

  - Amazon MWS APIのアクセスキーとシークレットキー

  - Googleアカウント

  - Googleスプレッドシート


### 手順


1. **Amazon MWS APIのセットアップ**

   - Amazon MWS APIにアクセスし、アクセスキーとシークレットキーを取得します。


2. **Googleスプレッドシートの準備**

   - 新しいGoogleスプレッドシートを作成します。

   - シート名を「ASINレポート」とします。


3. **Google Apps Scriptの設定**

   - スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択し、新しいプロジェクトを作成します。

   - 以下のスクリプトを貼り付けます。


### Google Apps Script コード


```javascript

const ACCESS_KEY = 'YOUR_AMAZON_MWS_ACCESS_KEY';

const SECRET_KEY = 'YOUR_AMAZON_MWS_SECRET_KEY';

const SELLER_ID = 'YOUR_AMAZON_SELLER_ID';

const MARKETPLACE_ID = 'YOUR_AMAZON_MARKETPLACE_ID';


const SPREADSHEET_ID = 'YOUR_SPREADSHEET_ID';

const SHEET_NAME = 'ASINレポート';


function fetchAmazonReport() {

  const url = 'https://mws.amazonservices.com/';

  const reportType = '_GET_FLAT_FILE_ALL_ORDERS_DATA_BY_ORDER_DATE_';

  

  const params = {

    AWSAccessKeyId: ACCESS_KEY,

    MWSAuthToken: SECRET_KEY,

    SellerId: SELLER_ID,

    ReportType: reportType,

    MarketplaceId: MARKETPLACE_ID,

    Version: '2009-01-01',

    Action: 'RequestReport',

    Timestamp: new Date().toISOString(),

  };


  const query = Object.keys(params)

    .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(params[key]))

    .join('&');


  const options = {

    method: 'post',

    payload: query,

    muteHttpExceptions: true

  };


  const response = UrlFetchApp.fetch(url, options);

  const reportRequestInfo = parseResponse(response.getContentText());

  

  // Wait for report to be generated

  Utilities.sleep(60000);


  // Retrieve the report

  params.Action = 'GetReport';

  params.ReportId = reportRequestInfo.ReportId;

  

  const reportQuery = Object.keys(params)

    .map(key => encodeURIComponent(key) + '=' + encodeURIComponent(params[key]))

    .join('&');


  const reportResponse = UrlFetchApp.fetch(url, {

    method: 'post',

    payload: reportQuery,

    muteHttpExceptions: true

  });


  const csvData = reportResponse.getContentText();

  saveToSheet(csvData);

}


function parseResponse(response) {

  // Parse the response XML and extract the necessary information

  const xml = XmlService.parse(response);

  const root = xml.getRootElement();

  const reportRequestInfo = root.getChild('ReportRequestInfo');

  const reportId = reportRequestInfo.getChildText('ReportId');

  

  return {

    ReportId: reportId

  };

}


function saveToSheet(csvData) {

  const sheet = SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName(SHEET_NAME);

  

  const csvRows = Utilities.parseCsv(csvData);

  csvRows.forEach(row => sheet.appendRow(row));

}


function scheduleDailyFetch() {

  ScriptApp.newTrigger('fetchAmazonReport')

    .timeBased()

    .everyDays(1)

    .atHour(2)

    .create();

}

```

ここから先は

680字

¥ 1,500

この記事が気に入ったらサポートをしてみませんか?