我确定我必须做些傻事,但我不知道它是什么。如何获取简单文本文件的内容?是否需要.txt扩展名?也许它与一年前创建文件的方式有关?
错误是:'服务不可用:文档(第61行,文件“fileFuncs”)'。第61行突出显示如下。
提前感谢您的帮助。
function testGetFile()
{
getFile("testGetFile", "WhoAmI");
}
function getFile(calledFrom, targetFile)
{
var root = DriveApp.getRootFolder();
var files=root.getFiles();
var numFiles=0;
while (files.hasNext()) {
var file = files.next();
numFiles++;
var filename = file.getName();
if (filename == targetFile) {
Logger.log("Success. Found file: " + filename);
Logger.log(' Number of files processed = '+numFiles+'\n\n');
var fileId = file.getId();
**var doc = DocumentApp.openById(fileId); // Line 61:THIS FAILS with above error**
var body=doc.getBody();
var text=body.getText();
Logger.log('text = '+text);// there it is
return text;
}
} // while()
return -1;
}
答案 0 :(得分:1)
如评论中所述,条件为真时使用的方法仅适用于Google文档,如果您尝试在其他文件类型上使用它们,则会失败。
为了防止这种情况,只需在代码中添加第二个条件,如下所示:
if (filename == targetFile && file.getMimeType()=="application/vnd.google-apps.document") {
通过上述修改,您将不会再出现错误,但您可能无法打开您尝试过的目标,因为它不是正确的mime类型。
答案 1 :(得分:1)
现在我们知道它是一个text / plain doc,我们可以添加好的方法来处理它。正如Serge所说,你使用的方法仅适用于“google文档”文件,所以你必须在使用之前检查这是一个google文档文件。我们将使用text / plain文档执行相同的操作:
function testGetFile(){
getFile("testGetFile", "WhoAmI");
}
function getFile(calledFrom, targetFile){
var root = DriveApp.getRootFolder();
var files=root.getFiles();
/*
instead of a root getFiles() I prefer to use searchFiles
I'ts less work for your script.
the documentation on search: https://developers.google.com/drive/web/search-parameters
*/
files = root.searchFiles("title = 'WhoAmI' and mimeType = 'text/plain'"); // if it's a txt doc it should have .txt at the end of it's title: "WhoAmI.txt"
var numFiles=0;
while (files.hasNext()) {
var file = files.next();
numFiles++;
var filename = file.getName();
var mime = file.getMimeType();
Logger.log(mime); // produce a lot of output
if (filename == targetFile && mime=="application/vnd.google-apps.document") {
Logger.log("Success. Found GOOGLE DOC file: " + filename);
Logger.log(' Number of files processed = '+numFiles+'\n\n');
var fileId = file.getId();
var doc = DocumentApp.openById(fileId); // this won't fail anymore (I hope)
var body=doc.getBody();
var text=body.getText();
Logger.log('text = '+text);// there it is
return text;
}
else if(filename == targetFile && mime=="text/plain") {
Logger.log("Success. Found TXT file: " + filename);
Logger.log(' Number of files processed = '+numFiles+'\n\n');
var text = file.getBlob().getDataAsString();
Logger.log('text = '+text);// there it is
return text;
}
} // while()
return -1;
}