Я очень новичок в мире скриптов 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);
};
SpreadsheetApp.openById(id)
нельзя запустить, если триггер простой. Используйте устанавливаемый триггер. Вы можете использовать google/stackoverflow или посмотреть документацию здесь как создать устанавливаемый триггер.
Спасибо вам обоим - я переключился на устанавливаемый триггер и теперь получаю конкретную ошибку разрешения в моих последних двух строках (см. отредактированный код)
@MS удалите текущий триггер и создайте новый, чтобы предоставить доступ к методам DriveApp. Если это сработало, вы можете подтвердить ответ ниже.
Объяснение/решение:
Две вещи, которые следует отметить:
Вам нужен устанавливаемый триггер для использования методов, требующих авторизации. Вы обновили ответ, и вы сделали это.
Что касается второй проблемы, я полагаю, что вы создали устанавливаемый триггер до того, как добавили строки DriveApp
внизу своего кода. Если это так, то вы не дали скрипту разрешения на доступ к вашему диску.
Удалите текущий устанавливаемый триггер и создайте новый, и я ожидаю, что новый триггер попросит вас разрешить доступ к DriveApp
.
Для этого вам понадобится устанавливаемый триггер.