# Актуальный код

{% code title="Code.js" lineNumbers="true" fullWidth="true" %}

```javascript
/**
 * @OnlyCurrentDoc
 * @author Mikhail Nosaev <m.nosaev@gmail.com>
 * @see {@link https://t.me/nosaev_m Telegram} разработка Google таблиц и GAS скриптов
 * @see {@link https://yandex.ru/dev/market/partner-api/doc/ru/ YandexMarket API}
 * Актуально для версии 24
 */

var service = PropertiesService.getScriptProperties();
const YM = YandexMarket;

const businessId = service.getProperty("businessId");
const token = service.getProperty("token");
const apiKey = service.getProperty("apiKey");
const campaignId = service.getProperty("campaignId");

function onOpen() {
  YM.CONFIG.menu.full();
}

const useCampaignIds = [];

const context = {
  service: PropertiesService,
  logRequest: false,
  debug: false,
};

YM.context = Object.assign(YM.context, {
  ...context
});

const YMC = (token || apiKey) && businessId ? YM.apiClient({
  businessId,
  token,
  apiKey,
  campaignId,
  useCampaignIds,
  service,
}) : null;

function setAccess() {
  YM.setAccess(service);
}

// ####################################################################################################################################
// ОСТАТКИ
// ####################################################################################################################################

function ymStocks() {
  // Информация об остатках и оборачиваемости
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/stocks/getStocks
  const { settings: accumulate } = YM.settingsMain({ func: arguments.callee.name });

  YM.stocks(YMC, { accumulate });
}

function ymStocksAll() {
  // Информация об остатках и оборачиваемости (все магазины)
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/stocks/getStocks
  const { settings: accumulate } = YM.settingsMain({ func: arguments.callee.name });

  YM.stocksAll(YMC, { accumulate });
}

// ####################################################################################################################################
// ЗАКАЗЫ
// ####################################################################################################################################

function ymOrders() {
  // Информация о нескольких заказах
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/orders/getOrders
  const { fromDate, toDate, settings: status } = YM.settingsMain({ func: arguments.callee.name });

  YM.orders(YMC, {
    fromDate,
    toDate,
    status,
  });
}

function ymOrdersAll() {
  // Информация о нескольких заказах (все магазины)
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/orders/getOrders
  const { fromDate, toDate, settings: status } = YM.settingsMain({ func: arguments.callee.name });

  YM.ordersAll(YMC, {
    fromDate,
    toDate,
    status
  });
}

// ####################################################################################################################################
// ВОЗВРАТЫ
// ####################################################################################################################################

function ymReturns() {
  // Список невыкупов и возвратов
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/orders/getReturns
  const { fromDate, toDate, settings: type } = YM.settingsMain({ func: arguments.callee.name });

  YM.returns(YMC, {
    fromDate,
    toDate,
    type
  });
}

function ymReturnsAll() {
  // Список невыкупов и возвратов (все магазины)
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/orders/getReturns
  const { fromDate, toDate, settings: type } = YM.settingsMain({ func: arguments.callee.name });

  YM.returnsAll(YMC, {
    fromDate,
    toDate,
    type,
  });
}

// ####################################################################################################################################
// ЦЕНЫ
// ####################################################################################################################################

function ymPrices() {
  // Просмотр цен на указанные товары в магазине
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/assortment/getPricesByOfferIds
  const { settings: accumulate } = YM.settingsMain({ func: arguments.callee.name });

  YM.prices(YMC, { accumulate });
}

function ymPricesAll() {
  // Просмотр цен на указанные товары в магазине (все магазины)
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/assortment/getPricesByOfferIds
  const { settings: accumulate } = YM.settingsMain({ func: arguments.callee.name });

  YM.pricesAll(YMC, { accumulate });
}

function ymPricesRecommendations() {
  // Рекомендации Маркета, касающиеся цен
  //  @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/getOfferRecommendations

  YM.pricesRecommendations(YMC, {});
}

// ####################################################################################################################################
// ТОВАРЫ
// ####################################################################################################################################

function ymBusinessesAssortment() {
  // Информация о товарах в каталоге
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/business-assortment/getOfferMappings
  const { settings: cardStatuses } = YM.settingsMain({ func: arguments.callee.name });

  YM.businessesAssortment(YMC, { cardStatuses, useCampaignIds, });
}

// ####################################################################################################################################
// ПРОЧЕЕ
// ####################################################################################################################################

function ymWarehouses() {
  // Идентификаторы складов Маркета (FBY)
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/warehouses/getFulfillmentWarehouses

  YM.warehouses(YMC);
}

function ymCampaigns() {
  // Список магазинов пользователя
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/campaigns/getCampaigns

  YM.campaigns(YMC, {});
}

// ####################################################################################################################################
// АКЦИИ
// ####################################################################################################################################

function ymPromos() {
  // Получение списка акций
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/promos/getPromos
  const { settings: mechanics } = YM.settingsMain({ func: arguments.callee.name });

  YM.promos(YMC, { mechanics });
}

function ymPromoOffers() {
  // Получение списка товаров, которые участвуют или могут участвовать в акции
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/promos/getPromoOffers

  const { settings: promos } = YM.settingsMain({ func: arguments.callee.name });

  YM.promoOffers(YMC, { promos });
}

// ####################################################################################################################################
// ОТЧЕТЫ
// ####################################################################################################################################

function ymReportStatsOrders() {
  // Детальная информация по заказам
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/stats/getOrdersStats
  const { fromDate: dateFrom, toDate: dateTo, settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportStatsOrders(YMC, {
    dateFrom,
    dateTo,
    campaignId
  });
}

function ymReportShowsSales() {
  // Отчет «Аналитика продаж»
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateShowsSalesReport
  const { fromDate: dateFrom, toDate: dateTo, settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportShowsSales(YMC, {
    dateFrom,
    dateTo,
    campaignId
  });
}

function ymReportBoostConsolidated() {
  // Отчет по бусту продаж
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateBoostConsolidatedReport
  const { fromDate: dateFrom, toDate: dateTo } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportBoostConsolidated(YMC, {
    dateFrom,
    dateTo,
  });
}

function ymReportGoodsFeedback() {
  // Отчет по отзывам о товарах
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateGoodsFeedbackReport

  YM.reportGoodsFeedback(YMC);
}

function ymReportShelfStatistics() {
  // Отчет по полкам
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateShelfsStatisticsReport
  const { fromDate: dateFrom, toDate: dateTo, settings: attributionType } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportShelfStatistics(YMC, {
    dateFrom,
    dateTo,
    attributionType
  });
}

function ymReportStocksOnWarehouses() {
  // Отчет по остаткам на складах
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateStocksOnWarehousesReport
  const { settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportStocksOnWarehouses(YMC, {
    campaignId
  });
}

function ymReportGoodsTurnover() {
  // Отчет по оборачиваемости
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateGoodsTurnoverReport
  const { fromDate: date, settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportGoodsTurnover(YMC, {
    campaignId,
    date
  });
}

function ymReportUnitedMarketplaceServices() {
  // Отчет по стоимости услуг
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateUnitedMarketplaceServicesReport
  const { fromDate: dateFrom, toDate: dateTo, settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportUnitedMarketplaceServices(YMC, {
    dateFrom,
    dateTo,
    campaignId,
  });
}

function ymReportUnitedMarketplaceServicesAll() {
  // Отчет по стоимости услуг
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateUnitedMarketplaceServicesReport
  const { fromDate: dateFrom, toDate: dateTo, settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportUnitedMarketplaceServicesAll(YMC, {
    dateFrom,
    dateTo,
    campaignId,
  });
}

function ymReportGoodsRealization() {
  // Отчет по реализации
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generateGoodsRealizationReport
  const { fromDate, settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportGoodsRealization(YMC, {
    month: parseInt(fromDate.split("-")[1]),
    year: parseInt(fromDate.split("-")[0]),
    campaignId
  });
}

function ymReportPrices() {
  // Отчет «Цены на рынке»
  // @see https://yandex.ru/dev/market/partner-api/doc/ru/reference/reports/generatePricesReport
  const { fromDate: creationDateFrom, toDate: creationDateTo, settings: campaignId } = YM.settingsMain({ func: arguments.callee.name });

  YM.reportPrices(YMC, {
    creationDateFrom,
    creationDateTo,
    campaignId
  });
}
```

{% endcode %}
