Теперь, когда мы знаем, что это текстовый / простой документ, мы можем добавить хороший метод для его обработки. Как сказал Серж, в этом посту метод, который вы используете, действителен только для файлов «google document», поэтому перед его использованием вы должны проверить, что это файл документа google. Мы собираемся сделать то же самое, но с текстовыми / открытыми документами:
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;
}
Решенный, отсутствует параметр «uploads» при создании строки авторизации.