我正在尝试在复制完成后更新新复制的文档,将其添加到不同的文件夹并删除其根文件。Google脚本无法找到新复制的文件。错误在代码的下半部分,用星号用TypeError括起来。
我怀疑这与var doc = DocumentApp.getActiveDocument();
的路线有关。我不确定如何获取新复制的文档(file2
或Date - Weekly Agenda
)的URL。
function copyupdateWeeklyAgenda() {
var file = DriveApp.getFileById("FILEKEY");
var source_folder = DriveApp.getFolderById("FOLDERKEY");
var dest_folder = DriveApp.getFolderById("FOLDERKEY");
// Make a backup copy.
var file2 = file.makeCopy('Date - Weekly Agenda');
dest_folder.addFile(file2);
source_folder.removeFile(file2);
//START Update Weekly Agenda Data ---
var ssUrl = 'https://whydoyouwanttoknow.com';
var sheetName = 'Sheet1'; // name of sheet to use
var rangeName = 'A1:B2'; // range of values to include
var values = SpreadsheetApp.openByUrl(ssUrl)
.getSheetByName(sheetName)
.getRange(rangeName)
.getValues();
var doc = DocumentApp.getActiveDocument();
**var body = doc.getBody();** <--- TYPEERROR: Cannot call method "getBody" of null.
var ranges = doc.getNamedRanges('embeddedSheet-range');
if (ranges.length == 0) {
var table = body.appendTable(values);
...ETC.
发布于 2016-12-10 12:04:58
您的file2
变量是File
类的对象,因为这是File#makeCopy
返回的内容。要获取相应的Document
,请使用
var doc = DocumentApp.openById(file2.getId());
备注
getActiveDocument
指的是脚本附加到的文档(如果有)。它并不意味着“脚本当前正在处理的事情”。var ss = SpreadsheetApp.open(file2)
将返回包含在file2
中的Spreadsheet
。显然,API设计者忘记了在DocumentApp
中包含open
方法,所以我们必须如上所述检查文件ID。https://stackoverflow.com/questions/41071264
复制相似问题