Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 将代码从DocList迁移到DriveApp_Google Apps Script_Google Drive Api - Fatal编程技术网

Google apps script 将代码从DocList迁移到DriveApp

Google apps script 将代码从DocList迁移到DriveApp,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我正在尝试将下面的代码移植到DriveApp,但当我迁移到“DriveApp.append”时,“doc.append”函数不起作用 函数过程(线程、线程开始、文件夹、过程){ var start=Date.now(); var label=folder.getName(); var-html; 如果(通过>1){ var docID=folder.createFile(label+“(part“+pass+”)”,“”,MimeType.HTML).getFolderById(); } 否则{

我正在尝试将下面的代码移植到DriveApp,但当我迁移到“DriveApp.append”时,“doc.append”函数不起作用

函数过程(线程、线程开始、文件夹、过程){
var start=Date.now();
var label=folder.getName();
var-html;
如果(通过>1){
var docID=folder.createFile(label+“(part“+pass+”)”,“”,MimeType.HTML).getFolderById();
}
否则{
var docID=folder.createFile(标签+“(第1部分)”,“”,MimeType.HTML).getFolderById();
}
var doc=DocsList.getFolderById(docID);
试一试{
doc.append(globalTOC(total_messages(thread)、thread.length、label));
}
捕获(例外){
公用事业.睡眠(5000);
doc.append(globalTOC(total_messages(thread)、thread.length、label));
}

您发布的代码有一些问题

首先,它似乎混淆了文件夹、文件和文件ID。第一部分在文件夹中创建一个文件,然后尝试调用getFolderById()。文件没有此名称的方法。然后它尝试从该ID获取一个文件。如果您想要一个文件及其ID,您应该使用原始文件并调用getId():

如果您使用的是DriveApp文件或DocsList文件(它们是不同的对象,不应互换使用),则上述操作将起作用

其次,目前没有通过DriveApp.File提供的append()函数。如果需要append功能,一种方法是将文件内容提取为字符串,附加到该字符串,然后用新字符串重置内容:

var blob = doc.getBlob();
var content = blob.getDataAsString();
content += '  NEW CONTENT\n';
doc.setContent(content);
请注意,如果内容超过10MB,setContent()将引发异常


另一种方法是将您的文件构建为Google文档,根据需要添加段落,并最终将该文档转换为您需要的文件类型。

Ryan Rith写道,“DriveApp文件或DocsList文件是不同的对象,不应互换使用”

在尝试将代码从DocsList移植到DriveApp时,我提供的andwer可能会有所帮助

var myDoc = folder.createFile(myFileName, 
    myHTMLcontents,  MimeType.HTML);
var myDocID = myDoc.getId();
var blob = doc.getBlob();
var content = blob.getDataAsString();
content += '  NEW CONTENT\n';
doc.setContent(content);