本页面介绍了如何使用 Google Apps 脚本和 Apps 脚本 API 将相同的脚本迁移到 V8。
Rhino 运行时已于 2026 年 1 月 31 日或之后停用。在该日期之前迁移使用 Rhino 运行时的所有脚本。如果您在 Rhino 上运行多个相同的脚本,请使用 Apps 脚本 API 将它们全部迁移到 V8。
设置环境
- 在 Apps 脚本信息中心设置中,开启 Apps 脚本 API。
- 前往 Apps 脚本信息中心设置。
- 如果该 API 处于关闭状态,请点击 Apps 脚本 API,然后开启 Apps 脚本 API 开关。
- 创建标准 Google Cloud 项目或重复使用现有项目。
- 在您的云项目中,配置 OAuth 权限请求页面。
在您的云项目中,开启 Apps 脚本 API。
创建 Apps 脚本项目并将其分配给您的云项目。
- 通过 Apps 脚本信息中心或前往 script.new 创建独立的 Apps 脚本项目。
- 点击项目设置
。
- 在 Google Cloud 项目部分,点击更改项目。
- 输入 Cloud 项目的项目编号。
- 点击设置项目。
迁移脚本
以下代码示例展示了如何使用 Apps 脚本 API 将相同的脚本从 Rhino 迁移到 V8,方法是将每个 Apps 脚本项目中的文件替换为一组与 V8 兼容的文件。
使用 Apps 脚本 API 的 projects.UpdateContent 方法时,请包含脚本项目中的所有文件,即使您不想更改某些文件也是如此。如果您不添加文件,该文件将被删除,并且无法恢复。
确保您至少拥有对计划迁移的脚本项目的编辑权限。
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"
}