簡體   English   中英

DriveApp:搜索具有非拉丁名稱的文件夾

[英]DriveApp: searching for folders with non-Latin names

我在Folder類的“getFoldersByName()”方法中遇到了似乎是一個問題。 如果我傳遞一個 Cyrillic 字符串作為參數,它會按原樣返回FolderIterator的實例,但調用'next()'方法總是拋出一個錯誤('迭代器已到達結尾')。

下面的函數在父文件夾中查找具有給定名稱的子文件夾並返回子文件夾。 如果子文件夾已經存在,函數會返回它而不是創建一個新文件夾。 不幸的是,這只適用於拉丁文子文件夾名稱。

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”。

我不確定這對您的情況是否有用。 因此,請將此視為幾個答案之一。 在我的環境中,我也有你這樣的情況。 在我的情況下,它發生在getFilesByName() Ref我通過使用searchFiles()而不是getFilesByName()解決了這個問題。 所以我認為這種方式可能可以用於您的情況。 修改后的腳本如下。 它使用getFoldersByName() 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;
}

如果我誤解了你的問題並且這對你沒有用,我很抱歉。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM