复制文件后获取文档的 URL/ID
Get document's URL/ID after a file was copied
我正在尝试让新复制的文档在复制完成后更新,添加到不同的文件夹并删除其根文件。 Google 脚本无法找到新复制的文件。错误在代码的下半部分,用星号包围,带有 TypeError。
我怀疑这与var doc = DocumentApp.getActiveDocument();
的那行有关。我不确定如何获取新复制文档的 URL(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.
您的 file2
变量是 class File
的对象,因为这是 File#makeCopy
return 的对象。要得到对应的Document
,使用
var doc = DocumentApp.openById(file2.getId());
备注
方法getActiveDocument
指的是脚本附加到的Document(如果有的话)。它并不意味着 "the thing that the script is currently handling"。
如果您正在处理电子表格,那么 var ss = SpreadsheetApp.open(file2)
将 return file2
中包含的 Spreadsheet
。显然,API 设计者忘记在 DocumentApp
中包含 open
方法,所以我们必须像上面那样检查文件 ID。
我正在尝试让新复制的文档在复制完成后更新,添加到不同的文件夹并删除其根文件。 Google 脚本无法找到新复制的文件。错误在代码的下半部分,用星号包围,带有 TypeError。
我怀疑这与var doc = DocumentApp.getActiveDocument();
的那行有关。我不确定如何获取新复制文档的 URL(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.
您的 file2
变量是 class File
的对象,因为这是 File#makeCopy
return 的对象。要得到对应的Document
,使用
var doc = DocumentApp.openById(file2.getId());
备注
方法
getActiveDocument
指的是脚本附加到的Document(如果有的话)。它并不意味着 "the thing that the script is currently handling"。如果您正在处理电子表格,那么
var ss = SpreadsheetApp.open(file2)
将 returnfile2
中包含的Spreadsheet
。显然,API 设计者忘记在DocumentApp
中包含open
方法,所以我们必须像上面那样检查文件 ID。