我正在尝试将以下代码移植到DriveApp,但是" doc.append"当我迁移到" DriveApp.append"时,函数不起作用。
function process(thread, threadStart, folder, pass){
var start = Date.now();
var label = folder.getName();
var html;
if(pass > 1){
var docID = folder.createFile(label + "(part " + pass + ")", '<html>', MimeType.HTML).getFolderById();
}
else{
var docID = folder.createFile(label + "(part 1)", "<html>", MimeType.HTML).getFolderById();
}
var doc = DocsList.getFolderById(docID);
try{
doc.append(globalTOC(total_messages(thread), thread.length, label));
}
catch(exception){
Utilities.sleep(5000);
doc.append(globalTOC(total_messages(thread), thread.length, label));
}
答案 0 :(得分:1)
您发布的代码存在一些问题。
首先,它似乎混淆了文件夹,文件和文件ID。第一部分在文件夹中创建文件,但随后尝试调用getFolderById()。文件没有此名称的方法。然后它尝试从该ID获取文件。如果你想要一个文件及其ID,你应该只使用原始文件并在其上调用getId():
var myDoc = folder.createFile(myFileName,
myHTMLcontents, MimeType.HTML);
var myDocID = myDoc.getId();
如果您使用的是DriveApp文件或DocsList文件(它们是不同的对象且不应互换使用),则上述操作将起作用。
其次,目前没有通过DriveApp.File提供的append()函数。如果你需要附加功能,一种方法是将文件的内容提取为字符串,附加到该字符串,并使用新字符串重置内容:
var blob = doc.getBlob();
var content = blob.getDataAsString();
content += ' NEW CONTENT\n';
doc.setContent(content);
请注意,如果内容超过10MB,setContent()将抛出异常。
另一种方法是将您的文件构建为Google文档,根据需要附加段落,最后将该文档转换为您需要的文件类型。
答案 1 :(得分:0)
Ryan Rith写道&#39; DriveApp文件或文档列表文件是不同的对象,不应互换使用&#39;
也许我在migrating from docslist to driveapp提供的andwer在尝试将代码从DocsList移植到DriveApp时可以提供帮助