我继承了Google文档共享网站的一些代码。 Google落后于docslist类,我转换为driveapp。以下函数检查是否添加了任何文件。我对代码有基本的了解,不明白导致错误的原因。
以下功能不起作用。在对象函数getContinuationToken()
中找不到函数getName这是功能:
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);
}
}
函数inProperties就是这个
//checking to see if the file or link is in the database
function inProperties(first,second,type) { //file: name,type ... link: name,link
var keys = PropertiesService.getScriptProperties().getKeys();
var exists = false;
if (keys.length > 0) {
if (type == "FILE") {
for (i in keys) {
if (keys[i] == (second + " - " + first)) {
exists = true;
}
}
}
if (type == "LINK") {
for (i in keys) {
if (keys[i] == ("link - " + second)) {
exists = true;
}
}
}
}
if (exists) {
return true;
} else {
addition(first,second,type);
return false;
}
}
非常感谢我更改了代码,现在它变得更远,但仍然有错误。
调试时,它会到达filesAdded行,然后右键捕获。调试器显示filesAdded [] counter = 0.0,我没有看到i的值。 thisFileName,thisFileType和Type。
有正确的值if (!inProperties(thisFileName, thisFileType, type)) {
filesAdded[counter] = pageFiles[i];
counter++;
答案 0 :(得分:1)
您需要将hasNext()
方法与从getFiles()
返回的FileIterator一起使用。
此示例代码直接来自文档:
// 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++;
}
}
文件类没有getFileType()
方法,您需要使用getMimeType()