Merchant API Service

שירות Merchant API מאפשר להשתמש ב-Merchant API ב-Apps Script כדי להעלות מוצרים ולנהל חשבונות Merchant Center.

מידע מפורט על Merchant API זמין במסמכי העזרה. בדומה לכל השירותים המתקדמים ב-Apps Script, שירות Merchant API משתמש באותם אובייקטים, שיטות ופרמטרים כמו ה-API הציבורי.

‫Merchant API הוא אוסף של ממשקי API משניים, שהם קבוצות של שירותים ומשאבים קשורים. רשימת ממשקי ה-API המשניים

כדי להשתמש בשירות Merchant API ב-Apps Script, צריך להפעיל את השירותים המתקדמים של Apps Script באחת מהדרכים הבאות:

  1. הפעלת appsscript.json בפרויקטים חדשים מומלץ להשתמש באפשרות הזו בפרויקטים חדשים של Apps Script.

  2. הפעלת Apps Script בפרויקטים קיימים. אתם יכולים להשתמש ב-method הזה כדי להפעיל ממשקי API משניים נוספים בפרויקטים קיימים.

הפעלת ממשקי API ב-appsscript.json

בדוגמה הבאה מוצג קובץ appsscript.json שמאפשר להשתמש ב-API המשני של מוצרים, חשבונות, דוחות ומקורות נתונים.

  1. בעורך Apps Script, לוחצים על הגדרות הפרויקט .

  2. מפעילים את האפשרות הצגת קובץ המניפסט 'appsscript.json' בעורך.

  3. בעורך, בוחרים את הקובץ appsscript.json.

  4. מחליפים את התוכן של קובץ appsscript.json בתוכן הבא:

    {
      "dependencies": {
        "enabledAdvancedServices": [
          {
            "userSymbol": "MerchantApiAccounts",
            "version": "accounts_v1beta",
            "serviceId": "merchantapi"
          },
          {
            "userSymbol": "MerchantApiDataSources",
            "version": "datasources_v1beta",
            "serviceId": "merchantapi"
          },
          {
            "userSymbol": "MerchantApiProducts",
            "version": "products_v1beta",
            "serviceId": "merchantapi"
          },
          {
            "userSymbol": "MerchantApiReports",
            "version": "reports_v1beta",
            "serviceId": "merchantapi"
          }
        ]
      },
      "exceptionLogging": "STACKDRIVER",
      "runtimeVersion": "V8"
    }
    
  5. לוחצים על שמירה.

  6. עכשיו אפשר להתייחס אל ממשקי ה-API המשניים הבאים בקוד בתור:

    א. MerchantApiAccounts

    ב. MerchantApiDataSources

    ג. MerchantApiProducts

    ד. MerchantApiReports

הפעלת Apps Script עבור ממשקי API משניים נוספים או פרויקטים קיימים

כדי להפעיל ממשקי API משניים בפרויקטים קיימים, פועלים לפי השלבים הבאים.

  1. פותחים את פרויקט Apps Script.

  2. בצד ימין, לוחצים על עורך < >.

  3. בצד ימין, ליד שירותים, לוחצים על הוספת שירות +.

  4. בוחרים את ממשק ה-API המשני שרוצים להפעיל בתפריט לבחירת גרסה.

  5. מוסיפים את שם ה-API המשני למזהה. לדוגמה, כדי להפעיל את ממשק המשנה Inventories API, בוחרים בגרסה inventories_v1beta ומשנים את המזהה ל-MerchantApiInventories.

  6. עכשיו אפשר להפנות אל Inventories sub-API בקוד בתור MerchantApiInventories.

קוד לדוגמה

בקטע הזה מוסבר איך להשתמש ב-Merchant API לתכונות נבחרות.

פרסום המוצרים

בדוגמה הזו מוצגות רשימות של מוצרים בחשבון Merchant Center נתון.


/**
 * Lists all products for a given Merchant Center account.
 */
function productList() {
  // IMPORTANT:
  // Enable the Merchant API Products Bundle Advanced Service and call it
  // "MerchantApiProducts"

  // Replace this with your Merchant Center ID.
  const accountId = '<MERCHANT_CENTER_ID>';

  // Construct the parent name
  const parent = 'accounts/' + accountId;

  try {
    console.log('Sending list Products request');
    let pageToken;
    // Set the page size to 1000. This is the maximum allowed page size.
    let pageSize = 1000;

    console.log('Retrieved products below:');
    // Call the Products.list API method. Use the pageToken to iterate through
    // all pages of results.
    do {
      response = MerchantApiProducts.Accounts.Products.list(parent, {pageToken, pageSize});
      console.log(response);
      pageToken = response.nextPageToken;
    } while (pageToken); // Exits when there is no next page token.
  } catch (e) {
    console.log('ERROR!');
    console.log(e);
  }
}

סינון מוצרים שנפסלו

בדוגמה הזו מוסבר איך לסנן מוצרים שנפסלו בחשבון Merchant Center.


/**
 * Demonstrates how to filter disapproved products using the Merchant API Reports service.
 */
function filterDisapprovedProducts() {
  // IMPORTANT:
  // Enable the Merchant API Reports Bundle Advanced Service and call it
  // "MerchantApiReports"
  // Enable the Merchant API Products Bundle Advanced Service and call it
  // "MerchantApiProducts"

  // Replace this with your Merchant Center ID.
  const accountId = '<INSERT_MERCHANT_CENTER_ID>';

  // Construct the parent name
  const parent = 'accounts/' + accountId;

  try {
    console.log('Sending search Report request');
    // Set pageSize to the maximum value (default: 1000)
    let pageSize = 1000;
    let pageToken;
    // The query below is an example of a query for the productView that gets product informations
    // for all disapproved products.
    let query = 'SELECT offer_id,' +
        'id,' +
        'price,' +
        'title' +
        ' FROM product_view' +
        ' WHERE aggregated_reporting_context_status = "NOT_ELIGIBLE_OR_DISAPPROVED"';


    // Call the Reports.search API method. Use the pageToken to iterate through
    // all pages of results.
    do {
      response =
          MerchantApiReports.Accounts.Reports.search({query, pageSize, pageToken}, parent);
      for (const reportRow of response.results) {
        console.log("Printing data from Product View:");
        console.log(reportRow);

        // OPTIONALLY, you can get the full product details by calling the GetProduct method.
        let productName = parent + "/products/" + reportRow.getProductView().getId();
        product = MerchantApiProducts.Accounts.Products.get(productName);
        console.log(product);
      }
      pageToken = response.nextPageToken;
    } while (pageToken);  // Exits when there is no next page token.

  } catch (e) {
    console.log('ERROR!');
    console.log('Error message:' + e.message);
  }
}

אחזור דוח של חשבון מסוים

בדוגמה הזו מוסבר איך לאחזר דוח עבור חשבון Merchant Center נתון.


/**
 * Searches a report for a given Merchant Center account.
 */
function searchReport() {
  // IMPORTANT:
  // Enable the Merchant API Reports Bundle Advanced Service and call it
  // "MerchantApiReports"

  // Replace this with your Merchant Center ID.
  const accountId = '<MERCHANT_CENTER_ID>';

  // Construct the parent name
  const parent = 'accounts/' + accountId;

  try {
    console.log('Sending search Report request');
    // Set pageSize to the maximum value (default: 1000)
    let pageSize = 1000;
    let pageToken;
    // Uncomment the desired query from below. Documentation can be found at
    // https://developers.google.com/merchant/api/reference/rest/reports_v1beta/accounts.reports#ReportRow
    // The query below is an example of a query for the product_view.
    let query = 'SELECT offer_id,' +
        'id,' +
        'price,' +
        'gtin,' +
        'item_issues,' +
        'channel,' +
        'language_code,' +
        'feed_label,' +
        'title,' +
        'brand,' +
        'category_l1,' +
        'product_type_l1,' +
        'availability,' +
        'shipping_label,' +
        'thumbnail_link,' +
        'click_potential' +
        ' FROM product_view';

    /*
    // The query below is an example of a query for the
    price_competitiveness_product_view. let query = "SELECT offer_id,"
                 + "id,"
                 + "benchmark_price,"
                 + "report_country_code,"
                 + "price,"
                 + "title,"
                 + "brand,"
                 + "category_l1,"
                 + "product_type_l1"
                + " FROM price_competitiveness_product_view"
                + " WHERE date BETWEEN '2023-03-03' AND '2025-03-10'"; */
    /*
    // The query below is an example of a query for the
    price_insights_product_view. let query = "SELECT offer_id,"
                     + "id,"
                     + "suggested_price,"
                     + "price,"
                     + "effectiveness,"
                     + "title,"
                     + "brand,"
                     + "category_l1,"
                     + "product_type_l1,"
                     + "predicted_impressions_change_fraction,"
                     + "predicted_clicks_change_fraction,"
                     + "predicted_conversions_change_fraction"
                    + " FROM price_insights_product_view"; */

    /*
    // The query below is an example of a query for the
    product_performance_view. let query = "SELECT offer_id,"
            + "conversion_value,"
            + "marketing_method,"
            + "customer_country_code,"
            + "title,"
            + "brand,"
            + "category_l1,"
            + "product_type_l1,"
            + "custom_label0,"
            + "clicks,"
            + "impressions,"
            + "click_through_rate,"
            + "conversions,"
            + "conversion_rate"
            + " FROM product_performance_view"
            + " WHERE date BETWEEN '2023-03-03' AND '2025-03-10'"; */

    // Call the Reports.search API method. Use the pageToken to iterate through
    // all pages of results.
    do {
      response =
          MerchantApiReports.Accounts.Reports.search({query, pageSize, pageToken}, parent);
      for (const reportRow of response.results) {
        console.log(reportRow);
      }
      pageToken = response.nextPageToken;
    } while (pageToken);  // Exits when there is no next page token.

  } catch (e) {
    console.log('ERROR!');
    console.log(e);
    console.log('Error message:' + e.message);
    if (e.stack) {
      console.log('Stack trace:' + e.stack);
    }
  }
}


הצגת רשימה של כל מקורות הנתונים

בדוגמה הזו מוצג איך מפרטים את כל מקורות הנתונים בחשבון Merchant Center נתון.


/**
 * Lists all data sources for a given Merchant Center account.
 */
function listDataSources() {
  // IMPORTANT:
  // Enable the Merchant API DataSources Bundle Advanced Service and call it
  // "MerchantApiDataSources"

  // Replace this with your Merchant Center ID.
  const accountId = '<MERCHANT_CENTER_ID>';

  // Construct the parent name
  const parent = 'accounts/' + accountId;
  let dataSources = [];
  let primaryDataSources = [];
  try {
    console.log('Sending list DataSources request');
    let pageToken;
    let pageSize = 10;
    // Call the DataSources.list API method. Use the pageToken to iterate through
    // all pages of results.
    do {
      response =
          MerchantApiDataSources.Accounts.DataSources.list(parent, {pageSize, pageToken});
      for (const datasource of response.dataSources) {
        dataSources.push(datasource);
        if (datasource.primaryProductDataSource) {
          primaryDataSources.push(datasource);
        }
      }
      pageToken = response.nextPageToken;
    } while (pageToken);  // Exits when there is no next page token.
    console.log('Retrieved ' + dataSources.length + ' data sources.');
    console.log(
        'There were ' + primaryDataSources.length +
        ' primary product data sources.');
  } catch (e) {
    console.log('ERROR!');
    console.log(e);
  }
}