我正在尝试将新复制的文档在复制完成后更新,添加到其他文件夹并删除其根文件。 Google脚本无法找到新复制的文件。该错误位于由TypeError星号包围的代码的下半部分。
我怀疑它与var doc = DocumentApp.getActiveDocument();
的行有关。我不确定如何获取新复制文档的网址(file2
或Date - Weekly Agenda
)。
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.
答案 0 :(得分:2)
您的file2
变量是类File
的对象,因为这是File#makeCopy
返回的内容。要获取相应的Document
,请使用
var doc = DocumentApp.openById(file2.getId());
方法getActiveDocument
是指附加脚本的文档(如果有)。它并不意味着脚本正在处理的东西&#34;。
如果您正在处理电子表格,则var ss = SpreadsheetApp.open(file2)
会返回Spreadsheet
中包含的file2
。显然,API设计人员忘记在open
中包含DocumentApp
方法,因此我们必须按上述方式查看文件ID。