Google apps script 在对象函数getContinuationToken()中找不到函数getName
我继承了一些谷歌文档共享网站的代码。谷歌屏蔽了docslist类,我转而使用driveapp。以下函数检查是否添加了任何文件。我对代码有一个基本的了解,但不明白是什么导致了错误 以下功能不起作用。在对象函数getContinuationToken()中找不到函数getName 以下是函数:Google apps script 在对象函数getContinuationToken()中找不到函数getName,google-apps-script,Google Apps Script,我继承了一些谷歌文档共享网站的代码。谷歌屏蔽了docslist类,我转而使用driveapp。以下函数检查是否添加了任何文件。我对代码有一个基本的了解,但不明白是什么导致了错误 以下功能不起作用。在对象函数getContinuationToken()中找不到函数getName 以下是函数: function checkDocs(){ try { var pageFolder = DriveApp.getFolderById('0B3e2-xxxxxxxxxxxxxxxxx'); var f
function checkDocs(){
try {
var pageFolder = DriveApp.getFolderById('0B3e2-xxxxxxxxxxxxxxxxx');
var filesAdded = new Array();
var counter = 0;
var pageFiles = pageFolder.getFiles();
var blank = new Array(); //extra for function
var type = "FILE";
// Logger.log(pageFiles)
for (var i = 0; i < pageFiles.length; i++) {
if (!inProperties(pageFiles[i].getName(), pageFiles[i].getFileType().toString(), type)) {
filesAdded[counter] = pageFiles[i];
counter++;
}
}
if (filesAdded.length > 0) {
thereAreUpdates = true;
docWasAdded = true;
additioned(filesAdded, blank, type);
}
deletedDocs = checkDeleted(pageFiles);
if (deletedDocs.length > 0) {
thereAreUpdates = true;
docWasRemoved = true;
}
} catch (e) {
MailApp.sendEmail("xxxx@xxxxx.com", "Doc Share Error - Doc", e.message);
}
}
非常感谢,我修改了代码,现在代码更进一步了,但仍然有一个错误
调试时,它到达filesAdded行,然后直接捕获。调试器显示filesAdded[]counter=0.0,我没有看到I的值。thisFileName、thisFileType和Type有正确的值
if (!inProperties(thisFileName, thisFileType, type)) {
filesAdded[counter] = pageFiles[i];
counter++;
您需要对从
getFiles()
返回的FileIterator使用hasNext()
方法
此示例代码直接来自文档:
// Log the name of every file in the user's Drive.
var files = DriveApp.getFiles();
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
}
例如,如果只需要一个文件,则不需要使用while循环。但在您的情况下,看起来您得到了多个文件
因此,我将您的代码更改为:
try {
var pageFolder = DriveApp.getFolderById('folderID HERE');
var filesAdded = new Array();
var counter = 0;
var pageFiles = pageFolder.getFiles();
var blank = new Array(); //extra for function
var type = "FILE";
// Logger.log(pageFiles)
var thisFileType = "";
var thisFileName = "";
while (pageFiles.hasNext()) {
var file = pageFiles.next();
Logger.log(file.getName());
thisFileName = file.getName();
thisFileType = file.getMimeType();
if (!inProperties(thisFileName, thisFileType, type)) {
filesAdded[counter] = pageFiles[i];
counter++;
}
}
files类没有
getFileType()
方法,您需要使用getMimeType()
函数第14行中的inProperties
指的是什么?我已经添加了inProperties函数有关于propertieseservice
问题的报告。因此,如果您的代码正在工作,现在突然出现问题而没有任何更改,我会怀疑属性服务
。最好的做法是使用调试器逐步检查代码。见文件:
try {
var pageFolder = DriveApp.getFolderById('folderID HERE');
var filesAdded = new Array();
var counter = 0;
var pageFiles = pageFolder.getFiles();
var blank = new Array(); //extra for function
var type = "FILE";
// Logger.log(pageFiles)
var thisFileType = "";
var thisFileName = "";
while (pageFiles.hasNext()) {
var file = pageFiles.next();
Logger.log(file.getName());
thisFileName = file.getName();
thisFileType = file.getMimeType();
if (!inProperties(thisFileName, thisFileType, type)) {
filesAdded[counter] = pageFiles[i];
counter++;
}
}