我知道一些JS和我在MSO的VBA脚本方面有相当多的经验,但我刚刚开始学习如何编写google docs脚本,而且我在使用google脚本环境时遇到了困难
我在google驱动器上创建了一个doc,我正在尝试在代码中记录输出,但是当我收到错误时出现错误 TypeError:在对象Excel下载宏日志文件中找不到函数getBody。 (第56行,文件"代码")当我尝试运行此代码时:
function logDataFromCode() {
var LogDoc = DriveApp.getFilesByName('Excel Download Macro Log File').next();
// Access the body of LogDoc, then add a paragraph with relevant data from script:
LogDoc.getBody()
.appendPageBreak()
.appendParagraph("[put variables to log here]");
}
有人可以解释我收到此错误的原因吗?
答案 0 :(得分:3)
您收到该错误,因为getFilesByName("name").next()
返回的类型为File
,而非Document
。
解决方案是使用File
中的DriveApp
通过Document
明确打开DocumentApp
:
var LogDoc, files = DriveApp.getFilesByName("the file name");
if(files.hasNext()) {
LogDoc = DocumentApp.openById(files.next().getId());
} else {
// No files matched the name supplied to DriveApp
return;
}
答案 1 :(得分:2)
您的变量LogDoc
是File
,但您希望它是Document
投射它的最佳方法是获取它的ID,然后使用DocumentApp
进行访问以打开它。
像这样:
var LogFile = DriveApp.getFilesByName('Excel Download Macro Log File').next();
var LogDoc = DocumentApp.openById(LogFile.getId());
// Access the body of LogDoc, then add a paragraph with relevant data from script:
LogDoc.getBody()