【问题标题】:Google Scripts fileIterator issues谷歌脚本文件迭代器问题
【发布时间】:2018-12-18 20:35:52
【问题描述】:

我正在尝试使用谷歌脚本的 DriveApp folderIterator 访问子文件夹,但是它没有正确读取子文件夹。

例如我的驱动器有这样的结构:

+Root
   +High School
       +Class Material
          -File1
          -File2
       +Books

function test(){
    var folderIter = DriveApp.getFoldersByName("High School");
    var folder = folderIter.next();
    printFolder(folder);
}

function printFolder(folder){
    var folderIter = folder.getFoldersByName("Class Material");
    while (folderIter.hasNext()) { //  always returning false
        var file = folderIter.next();
        Logger.log(file.getName());
    }
}

我的 while 循环中的条件在应该读取文件夹“Class Material”时总是返回 false

任何帮助将不胜感激!

编辑:与我共享的文件夹有问题,有多个同名文件夹。

【问题讨论】:

  • 也许文件夹迭代器正在返回一个不同的“高中”文件夹。添加一个辅助功能来检查您可以访问多少个高中文件夹。
  • 你调试过你的脚本吗?如果是这样,你为什么不分享这些结果?你得到的文件夹的ID是什么?它是正确的文件夹吗?

标签: google-apps-script google-drive-api


【解决方案1】:

试试这个。

function test(){
    var folderIter = DriveApp.getFoldersByName("High School");
    var folder = folderIter.next();
    printFolder(folder);
}

function printFolder(folder){
  // get folders under High School
  var folders = folder.getFolders();
  while( folders.hasNext() ) {
    var subFolder = folders.next();
    if( subFolder.getName() ===  "Class Material" ) {
      // what every you want to do with subFolder
      return;
    }
  }
}

【讨论】:

  • folders.hasNext() 始终返回 false,即使在驱动器文件夹中,其中还有其他文件夹
  • 正如@Ruben 所说,有超过 1 个高中文件夹吗?
  • 不,只有一个高中文件夹,我在高中文件夹迭代器上调用了“hasNext”。任何其他想法将不胜感激。
  • 我尝试了一个文件夹的代码,该文件夹设置类似于您的描述 Tester1 和 SubTester1 和 SubTester2,它工作正常。您是否有权查看您提到的所有文件夹?
猜你喜欢
  • 2015-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
  • 1970-01-01
  • 2016-10-08
  • 2016-06-22
  • 1970-01-01
相关资源
最近更新 更多