При запуске одного из скриптов, всегда сначала запускается один определенный, а после уже вызываемый

У меня в проекте есть три скрипта, которые ходят на сервер Озон за информацией. Один скрипт отвечает за выгрузку статистики по продажам. Второй за статистику по рекламе. Третий за выгрузку остатков.

Если я запускаю любой из скриптов, сначала отрабатывает скрипт с выгрузкой статистики по рекламе, а после уже вызываемый. Даже если я вызываю конкретную функцию из другого скрипта, все равно всегда отрабатывает скрипт с выгрузкой статистики по рекламе.

Триггеры проверил, ничего нет.

Составлял код при помощи chat-gpt, так как сам не являюсь специалистом по JS.

Вот ссылка на копию таблицы, в Apps Script. Если нужно еще что-то предоставить, скажите. https://docs.google.com/spreadsheets/d/1yg7SfphYcmpY_cqM8sPp62aKVGaPq4tGUPw3tWpFwkA/edit?usp=sharing

Все ключи API, SKU и пр. удалены по понятным причинам) Но если запустить любой код, видно, что ошибка возвращается с performance.ozon.ru, хотя в скрипте stocks или orders обращение идет к api-seller.ozon, т.е. понятно, что выполняться начинает скрипт ads


Ответы (1 шт):

Автор решения: Prianichkin Sergey

Потому что у вас на листе ads есть такой код:

// Функция запуска всех процессов
function mainFunction() {
  createSales();
}

// Запуск mainFunction
mainFunction();

Так вот при запуске любого скрипта с любого листа, понятное дело, будет запущена функция mainFunction(), которая запустит createSales(), а та в свою очередь запустит запрос к https://performance.ozon.ru:443/api/client/statistics/json.

Если по простому, то при запуске любого скрипта с любого места этого проекта - движок GAS сначала соберет данные со всех листов в проекте, условно соединит их воедино и сначала выполнит то, что находится в глобальной видимости, например у вас это :

// Объявления переменных
var reports = {}; // Объект для хранения отчетов по каждой кампании
var globalTokenData; // Глобальная переменная для хранения токена
var globalUuid; // Глобальная переменная для хранения UUID отчета

// Запуск mainFunction
mainFunction();

И только потом будет запущена та функция, что вы выбрали и запустили руками

→ Ссылка