Возможно ли, чтобы подсказка отображалась для одной электронной таблицы при активации другой?

avatar
Graham Palermo
9 августа 2021 в 03:06
163
1
0

Возможно ли иметь триггеры, которые работают для 2 электронных таблиц (2 независимых файла) с одним сценарием? Я застрял в том, как сделать эту часть, так как она должна быть автоматизирована. До сих пор в моем исследовании я видел триггеры importrange, но ничего, что могло бы сделать подсказку на определенном листе.


Моей целью является создание функции "наложить вето на список" со следующими требованиями:

  1. Необходимо использовать таблицы Google а) Один лист с «триггерами», который является «контроллером» или модератором б) Один лист для «привилегированного» избирателя в) Один лист для «вторичного» избирателя

  2. Список будет динамическим, но для этого примера предположим, что он состоит из списка из 15 местоположений.

  3. Оба "избирателя" должны будут постоянно накладывать вето, пока не останется только 8 мест.

  4. «Контроллер» запускает систему, которая сначала запрашивает «предпочитаемого избирателя», а затем «дополнительного» с помощью подсказки, которая переходит в соответствующую электронную таблицу. Как только предпочитаемый делает выбор, список местоположений вычитается, затем подсказка переходит к рабочему листу «дополнительного».

Источник
idfurw
9 августа 2021 в 03:27
0

Возможно, вам потребуется создать веб-приложения с «контроллером» и отправить запрос из двух электронных таблиц на «контроллер» с помощью onEdit(e).

Ответы (1)

avatar
Rubén
9 августа 2021 в 04:47
0

Триггеры задаются по электронной таблице, а не по листу, но вы можете использовать операторы управления JavaScript, такие как if..else и switch, чтобы контролировать, когда должны выполняться части вашего скрипта.

Пример:

function respondToOnEdit(e){
  var sheetName = e.source.getActiveSheet().getName();
  if(sheetName === 'Sheet1'){
    // do something when Sheet1 is edited
  } else if(sheetName === 'Sheet2'){
    // do something when Sheet2 is edited  
  } else {
    // do something when any other sheet is edited
  }
}

Вам потребуется использовать код для создания устанавливаемого триггера для каждой электронной таблицы.

Фрагмент кода:

[id1, id2].forEach(id => {
var spreadsheet = SpreadsheetApp.openById(id);
ScriptApp.newTrigger('respondToOnEdit')
.forSpreadsheet(spreadsheet)
.create()
}

Связанные

Graham Palermo
9 августа 2021 в 23:42
0

Я сделал ошибку в своем описании: мне нужно, чтобы он разговаривал с другими файлами, как и с другими электронными таблицами, а не с внутренними листами одной электронной таблицы. Имеет ли это смысл? Тем не менее, спасибо за быстрый ответ! Посмотрел, что вы написали, и сослался на это, определенно сработало бы, если бы это было только для листов.

Rubén
9 августа 2021 в 23:43
0

@GrahamPalermo Пожалуйста, отредактируйте свой вопрос, чтобы уточнить его.

Graham Palermo
9 августа 2021 в 23:45
0

Это уже отредактировано выше, забыл упомянуть об этом, извините!

Graham Palermo
10 августа 2021 в 01:17
0

Похоже, мне нужно будет сделать несколько уроков с триггерами и сначала перейти на пользовательские. Это намного более продвинуто, чем то, что я ожидал. У вас есть хорошие ссылки на видео уроки для чего-то подобного?