【发布时间】:2015-06-26 17:19:31
【问题描述】:
我正在使用 Google 应用脚本。我正在尝试:
- 制作电子表格的副本
- 为副本指定一个特定的文件名,然后
- 将其保存到特定文件夹。
在我看来,下面的代码应该可以工作,但事实并非如此。它确实完成了任务 1 和 3 - 也就是说,它制作了一个副本并将该副本保存到我想要的文件夹中。但是,它不会使用我指定的文件名保存文件。相反,它将其保存为“[原始电子表格文件名]的副本”。为此,我使用File#makeCopy
(注意:我知道这个问题之前已经回答过了,但我相信自从 Google 停止了 DocList 服务之后,这个问题就没有得到回答。)
当我制作这个简化的 MCVE 时,我发现它按预期工作:
function saveAsSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxx");
DriveApp.getFileById(sheet.getId()).makeCopy("desired file name", destFolder);
} //END function saveAsSpreadsheet
但是,我的原始代码没有 - 副本的名称是错误的:
function saveAsSpreadsheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var buildingNameAddress = sheet.getRangeByName('buildingNameAddress').getValue();
Logger.log(buildingNameAddress); //Logs correct string
var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxx");
DriveApp.getFileById(sheet.getId()).makeCopy(buildingNameAddress, destFolder);
}
【问题讨论】:
-
这段代码是正确的并且可以工作......现在刚刚测试。
-
正如 Serge 所说,对我也有用。 3 项任务全部完成!
-
谢谢。你是对的,该代码有效。我在发布之前简化了我的代码。我的代码实际上是这样的: function saveAsSpreadsheet(){ var sheet = SpreadsheetApp.getActiveSpreadsheet(); var buildingNameAddress = sheet.getRangeByName('buildingNameAddress').getValue(); Logger.log(buildingNameAddress); //记录正确的字符串 var destFolder = DriveApp.getFolderById("xxxxxxxxxxxxxxxxxxxxxx"); DriveApp.getFileById(sheet.getId()).makeCopy(buildingNameAddress, destFolder); } @pointNclick @Serge insas
-
为什么上面的代码不起作用?谢谢。
-
鉴于您声明脚本日志显示预期的字符串值,它可能具有阻止其用作驱动器文件名的属性。
标签: google-apps-script google-sheets google-drive-api