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

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

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

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

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

    Включите API сценариев приложений.

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

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

Перенос скриптов

В следующем примере кода показано, как использовать Apps Script API для переноса идентичных сценариев из Rhino в V8 путем замены файлов в каждом проекте Apps Script набором файлов, совместимых с V8.

Убедитесь, что у вас есть как минимум доступ редактора к проектам сценариев, которые вы планируете перенести.

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!`);
    }
  });
}

Чтобы использовать 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"
}