Перейти к основному содержимому

Другие таблицы и IMPORTRANGE

Скрипт работает со своей таблицей всегда. Чтобы он мог открывать другие таблицы, владелец скрипта добавляет их в список на вкладке «Таблицы» редактора.

Добавить таблицу​

  1. Откройте вкладку «Таблицы» в редакторе скрипта.
  2. Нажмите «Добавить таблицу».
  3. Вставьте ссылку из адресной строки или выберите таблицу из своих.

Правила:

  • менять список может только владелец скрипта;
  • добавить можно только таблицу, которую владелец скрипта может редактировать;
  • до 10 таблиц на скрипт;
  • если владелец потерял доступ к таблице или её удалили, она остаётся в списке с пометкой «нет доступа», и скрипт её не откроет.

Вкладка «Таблицы»: кнопка «Добавить таблицу»

Открыть и прочитать​

function main() {
const prices = Coverse.tables.open("0b6f2c1e-5d1a-4c7e-9a3b-2f4d6e8a1c00"); // или ссылка из адресной строки
const rows = prices.getSheet("Цены").getDataRange().getValues();

Coverse.table.getSheet("Заказы").getRange(1, 6, rows.length, rows[0].length).setValues(rows);
}

Coverse.tables.open принимает ссылку или идентификатор таблицы. Coverse.tables.list() возвращает таблицы, которые скрипт может открыть сейчас, с полями id и name.

Что доступно в другой таблице​

ОбъектКоманды
ТаблицаgetId, getName, getSheets, getSheet, getSheetByName, flush
ЛистgetName, getRange, getDataRange, getLastRow, getLastColumn, appendRow, appendRows
ДиапазонgetValues, getValue, getDisplayValues, getDisplayValue, getFormulas, getFormula, setValues, setValue, setFormulas, setFormula, clear

Оформление, вставка и удаление строк и столбцов, операции с листами, диаграммы, фильтры, примечания, защита и проверка данных в другой таблице недоступны. Диапазон другой таблицы нельзя передать в copyTo: прочитайте значения и запишите их куда нужно.

Пример: журнал в общей таблице.

const journal = Coverse.tables.open("0b6f2c1e-5d1a-4c7e-9a3b-2f4d6e8a1c00").getSheet("Журнал");
journal.appendRow([new Date(), "Отчёт собран"]);

Постоянная связь через IMPORTRANGE​

Если данные другой таблицы должны обновляться сами, без запуска скрипта, запишите формулу IMPORTRANGE:

const link = "ССЫЛКА_НА_ТАБЛИЦУ"; // скопируйте из адресной строки таблицы-источника
const sheet = Coverse.table.getSheetByName("Цены") || Coverse.table.insertSheet("Цены");
sheet.getRange("A1").setFormula('=IMPORTRANGE("' + link + '";"Цены!A1:C100")');
Coverse.table.flush();
console.log(sheet.getRange("A1:C3").getValues());
  • Таблица-источник должна быть в списке на вкладке «Таблицы».
  • Формула должна состоять только из IMPORTRANGE, вложить её в другую функцию нельзя.
  • Импортированные значения доступны скрипту сразу после записи.

Как работает IMPORTRANGE в таблицах: IMPORTRANGE: подключение данных между таблицами.

Если код менял другой участник​

Доступ к другим таблицам дают права владельца скрипта. Поэтому, если код скрипта последним менял другой участник, доступ к другим таблицам приостанавливается, пока владелец не проверит изменения и не нажмёт «Подтвердить код» (или не сохранит код сам). Своя таблица скрипта при этом работает как обычно.

Лимиты​

Лимиты запуска (30 секунд, число запросов) считаются суммарно по всем таблицам. См. Лимиты.