Скрипт для копирования существующей электронной таблицы при редактировании другой электронной таблицы

Я очень новичок в мире скриптов Google и пытаюсь написать скрипт, чтобы когда кто-то редактировал один из двух столбцов в электронной таблице, это приводило к копированию и переименованию другой электронной таблицы на основе значений других столбцов в таблице. редактируемая строка. Сценарий, который у меня есть, приведен ниже, и все журналы работают правильно, но я получаю сообщение об ошибке, связанное с функцией окончательного копирования: «Исключение: у вас нет разрешения на вызов DriveApp.getFolderById».

Прямо сейчас у меня есть устанавливаемый триггер в редактируемой электронной таблице. Как заставить эти разрешения работать правильно? Любые советы высоко ценится!

function CreateNewSheet(e) {//"e" receives the event object

  var col = e.range.getColumn();//Get column number of edited cell
  Logger.log(col)
  
  var row = e.range.getRow(); //Get row number number of edited cell
  Logger.log(row)
  
  if (col != 12 && col != 14) {return;}// Halt the code if the column is not one of 2 of interest
  Logger.log("in the function")
  
  var id = "1qg5ZZOifJ1l0V4N8Gxa3qhOBRiMwpyFawdUDny7IB-o"; //ID of other spreadsheet to be copied
  var initial = e.value; //value from current spreadsheet needed for rename
  Logger.log(initial)
  var num = SpreadsheetApp.getActiveSheet().getRange(row, 1).getValue(); //value from current spreadsheet needed for rename
  var name = num + "_" + initial
  Logger.log(name)
  
  var destFolder = DriveApp.getFolderById("1DKpPbht1gGeKstXKMz6VtCz4TGj-4RJm")
  DriveApp.getFileById(id).makeCopy("name", destFolder);
};

Для этого вам понадобится устанавливаемый триггер.

Cooper 09.12.2020 23:58
SpreadsheetApp.openById(id) нельзя запустить, если триггер простой. Используйте устанавливаемый триггер. Вы можете использовать google/stackoverflow или посмотреть документацию здесь как создать устанавливаемый триггер.
Marios 10.12.2020 01:12

Спасибо вам обоим - я переключился на устанавливаемый триггер и теперь получаю конкретную ошибку разрешения в моих последних двух строках (см. отредактированный код)

M S 10.12.2020 01:16

@MS удалите текущий триггер и создайте новый, чтобы предоставить доступ к методам DriveApp. Если это сработало, вы можете подтвердить ответ ниже.

Marios 10.12.2020 01:30
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Объяснение/решение:

Две вещи, которые следует отметить:

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

  2. Что касается второй проблемы, я полагаю, что вы создали устанавливаемый триггер до того, как добавили строки DriveApp внизу своего кода. Если это так, то вы не дали скрипту разрешения на доступ к вашему диску.

Удалите текущий устанавливаемый триггер и создайте новый, и я ожидаю, что новый триггер попросит вас разрешить доступ к DriveApp.

Другие вопросы по теме

Перенос диапазона строк на другую вкладку, затем очистка вкладки без удаления формул
ОШИБКА при обновлении электронной таблицы с использованием python, API Google Seets, v4: получено несколько значений для аргумента «диапазон»
Как проверить правильность URL-адреса, используемого в формуле IMAGE, и отображение изображения?
Получение электронной почты при вставке строк в таблицы Google
Проверка того, пуста ли ячейка в скриптах google
Расчет на основе зависимого раскрывающегося списка с использованием двух источников
Умножение всех чисел в ячейке на определенное число
Подсчет уникальных значений в диапазоне, если совпадения найдены в наборе диапазонов критериев
Как я могу запросить сумму по столбцам, но избежать дублирования представлений/строк от уникальных пользователей?
Журнал изменений Google Sheet Appscript для отслеживания удаленной строки