Включить имя родительской папки в электронную таблицу onOpen - PullRequest
0 голосов
/ 08 мая 2019

Я бы хотел, чтобы электронная таблица автоматически включала имя своей родительской папки в ячейку A1 активного листа onOpen. У меня есть сценарий, который успешно достигает этого, если я запускаю его вручную, но я не могу выполнить это onOpen. Как рекомендуется ниже, я попытался использовать устанавливаемый триггер onOpen, но это не решение, поскольку я хочу сделать копии электронной таблицы и включить имя папки в OnOpen. Триггер не будет копироваться с электронной таблицей, поэтому я вернулся к исходной точке. Вопрос с разрешениями, я полагаю? Любое решение?

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Вы можете использовать что-то подобное для создания устанавливаемого триггера onOpen, если его еще нет в проекте.

function createOpenTrigger(funcname) {
  if(funcname) {
    if(!isTrigger(funcname)) {
      ScriptApp.newTrigger(functionName).forSpreadsheet(SpreadsheetApp.getActive()).onOpen().create();
    }
  }
}

function isTrigger(funcName){
  var r=false;
  if(funcName){
    var allTriggers=ScriptApp.getProjectTriggers();
    for(var i=0;i<allTriggers.length;i++){
      if(funcName==allTriggers[i].getHandlerFunction()){
        r=true;
        break;
      }
    }
  }
  return r;
}

Конечно, пользователь должен сначала одобрить его.

0 голосов
/ 08 мая 2019

Как рекомендуется ниже, я попытался использовать устанавливаемый триггер onOpen, но это не решение, поскольку я хочу сделать копии электронной таблицы и включить имя папки в OnOpen.Триггер не будет копироваться с электронной таблицей, поэтому я вернулся к исходной точке.Вопрос с разрешениями, я полагаю?Любой обходной путь?

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

  • Существует два вида проектов сценариев: ограниченный и автономный.
  • Сценарии, которые сделают определенные действия, должны быть авторизованы до их выполнения.Пожалуйста, продолжайте читать.
  • Существует два вида триггеров, простые для установки
  • Устанавливаемые триггеры могут быть созданы вручную или с помощью сценария.Создание триггера с помощью сценария требует авторизации.
  • Устанавливаемые триггеры могут выполнять только те функции, которые были авторизованы пользователем, создающим триггер, либо вручную, либо с помощью сценария.Если вы создаете устанавливаемый триггер, но позже вносите изменения в сценарий, возможно, это приведет к повторной авторизации вашего сценария.
  • Для электронных таблиц могут быть созданы устанавливаемые триггеры с использованием ограниченных и автономных сценариев проекта.Для этого типа триггеров требуется авторизация для доступа к непубличным электронным таблицам
  • Чтобы получить родительскую папку электронной таблицы, ваш сценарий должен использовать Drive Service или Drive Advanced Service.Для этого требуется авторизация.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...