![](/img/trans.png)
[英]Is it a bad practice to use non-latin letters as object property names?
[英]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.