Я был заинтересован в автоматизации проверки данных таблицы Google в отношении другой таблицы Google с использованием скриптов Google. Я не могу найти способ ссылки на диапазон другой таблицы, используя метод openById
. Есть предположения?Проверка данных внешних таблиц Google Scripts
function externalSheetDataValidation() {
var cell = SpreadsheetApp.getActiveRange();
//var dataValidationSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("dataValidationRules");
//var dataValidationSheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/10Z2s1bSRIhZzBBrMfPmhEphnPx-kJdV3LLlbv0L59g8/edit#gid=0");
var dataValidationSheet = SpreadsheetApp.openById("10Z2s1bSRIhZzBBrMfPmhEphnPx-kJdV3LLlbv0L59g8");
var sheet = dataValidationSheet.getSheets()[0];
var range = SpreadsheetApp.getActiveSheet().getRange("A3:A4");
var rule = SpreadsheetApp.newDataValidation()
.requireValueInRange(range, true)
.setAllowInvalid(false)
.build();
cell.setDataValidation(rule);
Logger.log(dataValidationSheet.getName());
}
Благодарим вас за помощь! Да, вы правы, dataValidationSheet - это внешний лист. Я попытался удалить метод .getActiveSheet() из определения диапазона и кода, но он все еще ссылается на активный лист, а не на внешние значения листа для проверки данных. – gaparicio
Я полностью пропустил большую фотографию, когда я ответил сегодня утром, у меня еще не было моей первой чашки кофе. Насколько я знаю, нет способа установить внешний диапазон в качестве правила проверки данных. Возможно, вы сможете найти работу, в зависимости от того, что именно вы пытаетесь выполнить. Например, если вы не хотите ссылаться на диапазон, данные которого не будут меняться, вы можете захватить значения и создать правило типа VALUE_IN_LIST. Если это надстройка, вы можете иметь этот список повторно при каждом открытии аддона, но, насколько мне известно, к сожалению, нет простого способа сделать это. –