attached appsscript project
из a template file with attached appsscript project
- это связанный с контейнером сценарий Spreadsheet. - Вы хотите переименовать имя проекта GAS для привязанного к контейнеру сценария Spreadsheet, который был скопирован.
- В качестве шаблона используется электронная таблица, а в электронную таблицу включен сценарий, связанный с контейнером.
Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Проблема и обходное решение:
- Скриптовый скрипт в Документах Google не может быть получен методами Files: list и Файлы: попасть в Drive API. Об этом уже сообщалось средство отслеживания проблем .
- Метаданные сценария, привязанного к контейнеру, в Документах Google могут быть обновлены методом Files: update в Drive API.
- В вашем случае идентификатор проекта GAS (идентификатор сценария) не изменяется, поскольку он включен в шаблон Spreadsheet. Я думаю, что это может быть использовано для решения вашей проблемы.
Исходя из вышеизложенной ситуации, я хотел бы предложить следующий поток.
Поток:
- Установите переменные идентификатора скрипта, привязанного к контейнеру, таблицы Spreadsheet и исходного имени проекта идентификатора скрипта, привязанного к контейнеру, таблицы Spreadsheet.
- Переименование проекта GAS шаблона Spreadsheet в новый проект. имя.
- Скопируйте шаблон таблицы. В это время проект GAS также копируется как имя нового проекта.
- Переименование проекта GAS шаблона Spreadsheet в исходное имя проекта.
В соответствии с приведенным выше потоком, имя GAS-проекта сценария с привязкой к контейнеру в скопированной электронной таблице можно переименовать.
Если вышеуказанный обходной путь отражен в вашем сценарии, он выглядит следующим образом.
Измененный сценарий:
Перед запуском сценария , пожалуйста, включите Drive API в Advanced Google services. И, пожалуйста, установите переменные GASProjectId
, originalGASProjectName
и newGASProjectName
.
function copyTemplatev2(filename, sheetID) {
var GASProjectId = "###"; // Please set the container-bound script ID of the template Spreadsheet.
var originalGASProjectName = "originalName"; // Please set the original project name of container-bound script ID of the template Spreadsheet.
var newGASProjectName = "newName"; // Please set the new GAS project name.
// Rename to new project name.
Drive.Files.update({title: newGASProjectName}, GASProjectId);
var ss = SpreadsheetApp.openById(sheetID);
//Make a copy of the template file
var copy = DriveApp.getFileById(sheetID).makeCopy()
var documentId = copy.getId();
// Set permissions
copy.setSharing(DriveApp.Access.ANYONE, DriveApp.Permission.EDIT)
//Rename the copied file
DriveApp.getFileById(documentId).setName(filename);
// Rename to original project name.
Drive.Files.update({title: originalGASProjectName}, GASProjectId);
}
Ссылки:
Если я неправильно понял ваш вопрос и это было не то направление, которое вы хотите, я прошу прощения.