【问题标题】:DriveApp: searching for folders with non-Latin namesDriveApp:搜索具有非拉丁名称的文件夹
【发布时间】:2018-02-16 17:38:42
【问题描述】:

我在 Folder 类的 'getFoldersByName()' 方法中遇到了一个问题。如果我将西里尔字符串作为参数传递,它会返回 FolderIterator 的实例,但调用 'next()' 方法总是会引发错误('iterator已经结束了')。

下面的函数在父文件夹中找到具有给定名称的子文件夹并返回子文件夹。如果子文件夹已经存在,函数将返回它而不是创建一个新的。不幸的是,这只适用于拉丁文的子文件夹名称。

function findSubfolder(){

  var subfolderName = "Папка папка";  //string containing cyrillic characters

  var parentFolder = DriveApp.getFolderById(parentFolderId);

  var iterator = parentFolder.getFoldersByName(subfolderName);

  var folder = (iterator.hasNext()) ? iterator.next() : parentFolder.createFolder(subfolderName);

return folder;

}

值得一提的是,当我检查 (existingSubfolder.getName() == subfolderName) 时,它会返回“true”。

【问题讨论】:

    标签: javascript google-apps-script


    【解决方案1】:

    我不确定这对您的情况是否有用。因此,请将此视为几个答案之一。在我的环境中,我也有你这样的情况。就我而言,它发生在getFilesByName()Ref 我通过使用searchFiles() 而不是getFilesByName() 解决了这种情况。所以我认为这种方式可能可以用于您的情况。修改后的脚本如下。它使用searchFolders() 而不是getFoldersByName() 作为解决方法。

    function findSubfolder(){
      var subfolderName = "Папка папка";  //string containing cyrillic characters
      var parentFolder = DriveApp.getFolderById(parentFolderId);
      var iterator = parentFolder.searchFolders("title contains '" + subfolderName + "'"); // Modified
      var folder = (iterator.hasNext()) ? iterator.next() : parentFolder.createFolder(subfolderName);
      return folder;
    }
    

    如果我误解了您的问题并且这对您没有用处,我很抱歉。

    【讨论】:

    • @Anton Dementiev 很高兴您的问题得到了解决。也谢谢你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-11
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    相关资源
    最近更新 更多