将相同的脚本从 Rhino 批量迁移到 V8
使用集合让一切井井有条
根据您的偏好保存内容并对其进行分类。
本页介绍了如何使用 Apps 脚本和 Apps 脚本 API 将相同的脚本迁移到 V8。
您必须在 Rhino 停用之前(最早于 2026 年 1 月 31 日)迁移所有使用 Rhino 运行时的脚本。如果您在 Rhino 上运行多个相同的脚本,可以使用 Apps 脚本 API 将它们全部迁移到 V8。
设置环境
- 在 Apps 脚本信息中心设置中,开启 Apps 脚本 API。
- 前往 Apps 脚本信息中心设置。
- 如果该 API 处于关闭状态,请点击 Google Apps Script API,然后开启 Google Apps Script API 开关。
- 创建标准 Google Cloud 项目或重复使用现有项目。
- 在您的 Cloud 项目中,配置 OAuth 权限请求页面。
在您的 Cloud 项目中,启用 Apps Script API。
开启 Apps Script API
创建 Apps 脚本项目,并将该项目分配给您的 Cloud 项目。
- 通过 Apps 脚本信息中心或访问 script.new 来创建独立的 Apps 脚本项目。
- 点击项目设置
。
- 在 Google Cloud Platform (GCP) 项目部分,点击更改项目。
- 输入您的 Cloud 项目的项目编号。
- 点击设置项目。
迁移脚本
以下代码示例展示了如何使用 Apps 脚本 API 将相同的脚本从 Rhino 迁移到 V8,方法是将每个 Apps 脚本项目中的文件替换为一组与 V8 兼容的文件。
确保您至少拥有对计划迁移的脚本项目的编辑者访问权限。
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
如需在 Apps 脚本项目中使用 Apps 脚本 API,您必须将以下 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"
}
如未另行说明,那么本页面中的内容已根据知识共享署名 4.0 许可获得了许可,并且代码示例已根据 Apache 2.0 许可获得了许可。有关详情,请参阅 Google 开发者网站政策。Java 是 Oracle 和/或其关联公司的注册商标。
最后更新时间 (UTC):2025-08-31。
[null,null,["最后更新时间 (UTC):2025-08-31。"],[],[],null,["# Bulk migrate identical scripts from Rhino to V8\n\nThis page describes how to migrate identical scripts to V8 using\nApps Script and the Apps Script API.\n\nYou must migrate any scripts that use the Rhino runtime before Rhino is turned\ndown, happening on or after January 31, 2026. If you have multiple, identical\nscripts running on Rhino, you can migrate them to V8 all together using\nthe Apps Script API.\n\nSet up your environment\n-----------------------\n\n1. From the Apps Script dashboard settings, turn on the Apps Script API.\n 1. Go to the [Apps Script dashboard settings](https://script.google.com/home/usersettings).\n 2. If the API is turned off, click **Google Apps Script API**, then turn on the Google Apps Script API toggle.\n2. [Create a standard Google Cloud project](https://developers.google.com/workspace/guides/create-project#project) or reuse an existing project.\n3. In your Cloud project, [configure the OAuth consent screen](/workspace/guides/configure-oauth-consent).\n4. In your Cloud project, [turn on the Apps Script API](https://developers.google.com/workspace/guides/enable-apis).\n\n [Turn on the Apps Script API](https://console.cloud.google.com/flows/enableapi?apiid=script.googleapis.com)\n5. Create an Apps Script project and assign the\n Apps Script project to your Cloud project.\n\n 1. Create a standalone Apps Script project from the Apps Script dashboard or by going to [script.new](https://script.google.com/home/projects/create).\n 2. Click **Project Settings** .\n 3. In the **Google Cloud Platform (GCP) Project** section, click **Change project**.\n 4. Enter the project number of your Cloud project.\n 5. Click **Set project**.\n\nMigrate scripts\n---------------\n\nThe following code sample shows how to use the Apps Script API to\nmigrate identical scripts from Rhino to V8 by replacing the files in each\nApps Script project with a set of V8-compatible files.\n| **Important:** When you use the [`projects.UpdateContent`](/apps-script/api/reference/rest/v1/projects/updateContent) method of the Apps Script API, you must include all the files in the script project, even ones that you don't want to change. If you don't include a file, the file is deleted and can't be restored.\n\nMake sure you have at least editor access to the script projects you plan to\nmigrate. \n\n### Code.gs\n\n function updateRhinoScripts() {\n // An array of script IDs of script projects to migrate.\n // TODO(developer): Replace with your script IDs.\n const scriptIds = ['abcdef12345678', 'abcdef12345678'];\n // An array of file objects to replace the existing files in each script project.\n // Remember to include all files for the script, excluded files are deleted.\n // TODO(developer): Replace with your script files.\n const filesToUpdate = {\n \"files\": [\n {\n \"name\": \"Code\",\n \"type\": \"SERVER_JS\",\n \"source\": \"// New updates\\nfunction myFunction() {\\n console.log('Hello, world!');\\n}\"\n },\n {\n \"name\": \"appsscript\",\n \"type\": \"JSON\",\n \"source\": JSON.stringify({\n \"timeZone\": \"America/New_York\",\n \"dependencies\": {},\n \"exceptionLogging\": \"STACKDRIVER\",\n \"runtimeVersion\": \"V8\"\n })\n }\n ]\n };\n updateMultipleAppsScripts(scriptIds, filesToUpdate);\n }\n\n function updateMultipleAppsScripts(scriptIds, filesToUpdate) {\n // 'scriptIds' should be an array of script IDs\n // 'filesToUpdate' should be an array of objects, each with:\n // name: The filename (For example, \"Code\", \"Utilities\")\n // source: The source code for that file.\n scriptIds.forEach(function (scriptId) {\n // Makes the API request.\n const response = UrlFetchApp.fetch(\n `https://script.googleapis.com/v1/projects/${scriptId}/content`,\n {\n method: \"PUT\",\n headers: {\n Authorization: `Bearer ${ScriptApp.getOAuthToken()}`\n },\n contentType: \"application/json\",\n payload: JSON.stringify(filesToUpdate),\n muteHttpExceptions: true\n }\n );\n if (response.getResponseCode() !== 200) {\n console.log(`Error updating script ${scriptId}: ${response.getContentText()}`);\n } else {\n console.log(`Script ${scriptId} updated successfully!`);\n }\n });\n }\n\n### appsscript.json\n\nTo use the Apps Script API in your Apps Script\nproject, you must add the following OAuth scopes to your manifest file:\n\n- `\"https://www.googleapis.com/auth/script.projects\"`\n- `\"https://www.googleapis.com/auth/script.external_request\"`\n\nTo expose the manifest file in the editor, click **Project Settings**\n\nand check the **Show \"appsscript.json\" manifest file in editor** box. The\nfollowing is a sample manifest file with the appropriate OAuth scopes: \n\n {\n \"timeZone\": \"America/Denver\",\n \"dependencies\": {\n },\n \"oauthScopes\": [\n \"https://www.googleapis.com/auth/script.projects\",\n \"https://www.googleapis.com/auth/script.external_request\"\n ],\n \"exceptionLogging\": \"STACKDRIVER\",\n \"runtimeVersion\": \"V8\"\n }\n\nRelated topics\n--------------\n\n- [V8 runtime overview](/apps-script/guides/v8-runtime)\n- [Migrate scripts to the V8 runtime](/apps-script/guides/v8-runtime/migration)"]]