Google apps script 在对象函数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

我继承了一些谷歌文档共享网站的代码。谷歌屏蔽了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);
  }
}
非常感谢,我修改了代码,现在代码更进一步了,但仍然有一个错误

调试时,它到达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++;
    }
  }