getRange из одного файла в другой для нового подтверждения - PullRequest
0 голосов
/ 26 марта 2020
function test() {
  var  id = PropertiesService.getScriptProperties().getProperty('FILEID')
  var cell = SpreadsheetApp.getActive().getRange('A1');
  var range = SpreadsheetApp.openById(id).getRange('A1:A10');
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range, true).build();
  cell.setDataValidation(rule);
}

Мне нужно получить диапазон из одного файла электронной таблицы для установки в другом файле как Datavalidation, но он выдает ошибку: аргумент "= sheet! A1: A10" недопустим. Я думаю .getrange не запускается из одного файла в другой файл. Не могли бы вы мне помочь? ТКС.

1 Ответ

0 голосов
/ 26 марта 2020

Проблема:

Диапазон, указанный в Data validation , должен находиться в той же электронной таблице , что и диапазон, к которому применяется Data validation. Вы заметите это, если попытаетесь добавить его непосредственно через пользовательский интерфейс Sheets (при настройке диапазона вы можете выбирать только листы из текущей электронной таблицы).

Решение:

Как было предложено в комментарии, лучший способ добиться этого поведения:

  • Создание массива из значений в исходной электронной таблице.
  • Установка requireValueInList правила проверки для места назначения диапазон.

Вы можете сделать что-то по следующим строкам:

function dataValDifferentSS() {
  var id = PropertiesService.getScriptProperties().getProperty('FILEID');
  var range = SpreadsheetApp.openById(id).getSheetByName("source").getRange("A1:A"); // Change sheet name and range accordingly
  var list = range.getValues().flat().filter(value => value !== ""); // Get 1D array from source range
  var targetSheet = SpreadsheetApp.getActive().getSheetByName("target"); // Change sheet name accordingly
  var cell = targetSheet.getRange("A1"); // Change A1 range accordingly
  var rule = SpreadsheetApp.newDataValidation().requireValueInList(list, true).build();
  cell.setDataValidation(rule);
}

Примечание:

  • Вы должны отредактировать имена исходного и целевого листов и диапазоны соответственно (source, target, A1:A, A1).
  • Я предположил, что скрипт привязан к целевой электронной таблице.
  • Вы должны включить V8 , чтобы этот скрипт работал.

Ссылка:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...