На этой странице описано, как перенести идентичные скрипты в V8 с помощью Google Apps Script и API Apps Script.
Поддержка среды выполнения Rhino была прекращена 31 января 2026 года или позже. Перенесите все скрипты, использующие среду выполнения Rhino до этой даты. Если у вас есть несколько идентичных скриптов, работающих в Rhino, перенесите их все вместе в V8, используя API Apps Script.
Настройте свою среду
- В настройках панели управления Apps Script включите API Apps Script.
- Перейдите в настройки панели управления Apps Script .
- Если API отключен, нажмите «API Apps Script» , а затем включите переключатель «API Apps Script» .
- Создайте стандартный проект Google Cloud или используйте существующий проект.
- В вашем облачном проекте настройте экран согласия OAuth .
В вашем облачном проекте включите API Apps Script .
Создайте проект Apps Script и назначьте его своему облачному проекту.
- Создайте автономный проект Apps Script из панели управления Apps Script или перейдя по адресу script.new .
- Нажмите «Настройки проекта» .
.
- В разделе «Проект Google Cloud» нажмите «Изменить проект» .
- Введите номер проекта вашего облачного проекта.
- Нажмите «Установить проект» .
Миграция скриптов
Приведенный ниже пример кода демонстрирует, как использовать API Apps Script для миграции идентичных скриптов из Rhino в V8 путем замены файлов в каждом проекте Apps Script набором файлов, совместимых с V8.
При использовании метода projects.UpdateContent API Apps Script необходимо включить все файлы проекта скрипта, даже те, которые вы не хотите изменять. Если вы не включите файл, он будет удален и не сможет быть восстановлен.
Убедитесь, что у вас есть как минимум доступ в качестве редактора к проектам скриптов, которые вы планируете перенести.
Code.gs
function updateRhinoScripts() {
// An array of script IDs of script projects to migrate.
// TODO(developer): Replace with your script IDs.
const scriptIds = ['abcdef12345678', 'abcdef12345678'];
// An array of file objects to replace the existing files in each script project.
// Remember to include all files for the script, excluded files are deleted.
// TODO(developer): Replace with your script files.
const filesToUpdate = {
"files": [
{
"name": "Code",
"type": "SERVER_JS",
"source": "// New updates\nfunction myFunction() {\n console.log('Hello, world!');\n}"
},
{
"name": "appsscript",
"type": "JSON",
"source": JSON.stringify({
"timeZone": "America/New_York",
"dependencies": {},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
})
}
]
};
updateMultipleAppsScripts(scriptIds, filesToUpdate);
}
function updateMultipleAppsScripts(scriptIds, filesToUpdate) {
// 'scriptIds' should be an array of script IDs
// 'filesToUpdate' should be an array of objects, each with:
// name: The filename (For example, "Code", "Utilities")
// source: The source code for that file.
scriptIds.forEach(function (scriptId) {
// Makes the API request.
const response = UrlFetchApp.fetch(
`https://script.googleapis.com/v1/projects/${scriptId}/content`,
{
method: "PUT",
headers: {
Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
},
contentType: "application/json",
payload: JSON.stringify(filesToUpdate),
muteHttpExceptions: true
}
);
if (response.getResponseCode() !== 200) {
console.log(`Error updating script ${scriptId}: ${response.getContentText()}`);
} else {
console.log(`Script ${scriptId} updated successfully!`);
}
});
}
appsscript.json
Чтобы использовать API Apps Script в вашем проекте Apps Script, добавьте следующие области действия OAuth в файл манифеста:
-
"https://www.googleapis.com/auth/script.projects" -
"https://www.googleapis.com/auth/script.external_request"
Чтобы отобразить файл манифеста в редакторе, нажмите «Настройки проекта». и установите флажок «Показать файл манифеста "appsscript.json" в редакторе» . Ниже приведен пример файла манифеста с соответствующими областями действия OAuth:
{
"timeZone": "America/Denver",
"dependencies": {
},
"oauthScopes": [
"https://www.googleapis.com/auth/script.projects",
"https://www.googleapis.com/auth/script.external_request"
],
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8"
}