Массовый перенос идентичных скриптов из Rhino в V8.

На этой странице описано, как перенести идентичные скрипты в V8 с помощью Google Apps Script и API Apps Script.

Поддержка среды выполнения Rhino была прекращена 31 января 2026 года или позже. Перенесите все скрипты, использующие среду выполнения Rhino до этой даты. Если у вас есть несколько идентичных скриптов, работающих в Rhino, перенесите их все вместе в V8, используя API Apps Script.

Настройте свою среду

  1. В настройках панели управления Apps Script включите API Apps Script.
    1. Перейдите в настройки панели управления Apps Script .
    2. Если API отключен, нажмите «API Apps Script» , а затем включите переключатель «API Apps Script» .
  2. Создайте стандартный проект Google Cloud или используйте существующий проект.
  3. В вашем облачном проекте настройте экран согласия OAuth .
  4. В вашем облачном проекте включите API Apps Script .

    Включите API Apps Script.

  5. Создайте проект Apps Script и назначьте его своему облачному проекту.

    1. Создайте автономный проект Apps Script из панели управления Apps Script или перейдя по адресу script.new .
    2. Нажмите «Настройки проекта» . Значок для настроек проекта .
    3. В разделе «Проект Google Cloud» нажмите «Изменить проект» .
    4. Введите номер проекта вашего облачного проекта.
    5. Нажмите «Установить проект» .

Миграция скриптов

Приведенный ниже пример кода демонстрирует, как использовать 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"
}