所以问题是:
方法 getFilesByName()如果我使用西里尔文件定位文件,则不返回任何内容。但是如果我使用 getName(),我可以看到此文件。
问题出在哪里?
已添加:
抱歉没有消息。正如第二条评论所说 - 如果文件名是大写字母,问题仍然存在。
因此,如果我尝试搜索目标文件夹中的文件列表,googlescript将会看到我的文件,并返回“Шаблонпоописанию”。
function checkFile2(){
var foldername = "CaseMe";
var filename = FILE_NAME;
var folder = DriveApp.getFoldersByName(foldername);
Logger.log(folder.hasNext());
//Folder does not exist
if(!folder.hasNext()){
Logger.log("No Folder Found");
}
//Folder does exist
else{
Logger.log("Folder Found")
var file = folder.next().getFiles;
if(!file.hasNext()){
Logger.log("No Files Found");
}
else{
while (file.hasNext()) {
var filel = file.next();
Logger.log(filel.getName());
}
}
}
但是,如果我将尝试按目标名称搜索
function checkFile2(){
var foldername = "CaseMe";
var filename = FILE_NAME; // return "Шаблон по описанию"
var folder = DriveApp.getFoldersByName(foldername);
Logger.log(folder.hasNext());
//Folder does not exist
if(!folder.hasNext()){
Logger.log("No Folder Found");
}
//Folder does exist
else{
Logger.log("Folder Found")
var file = folder.next().getFilesByName(filename + '.xml');
if(!file.hasNext()){
Logger.log("No File Found");
}
else{
Logger.log("Files Found");
}
}
}
Googlescritp找不到我的文件,将返回“No File Found”
答案 0 :(得分:1)
它确实有效,我认为你不太了解.getFilesByName()
方法。
documentation表示此方法返回用户驱动器中具有给定名称的所有文件的集合。即它返回一个对象,如下面的屏幕截图所示,然后必须使用.hasNext()
和.next()
方法迭代对象。
答案 1 :(得分:0)
如果文件名包含大写字母,则此问题仍然存在。
function startFindFile() {
var folder = DriveApp.getFolderById(DriveApp.getFoldersByName("prices").next().getId());
var fileNameCyr1 = "Прайс1_Склад ЦС.xls";
var fileNameCyr2 = "прайс1_склад цс.xls";
var fileNameEng = "Price.txt";
Logger.log("List all files:" );
var files = folder.getFiles();
findFile(files);
Logger.log("Find files: " + fileNameEng );
files = folder.getFilesByName(fileNameEng);
findFile(files);
Logger.log("Find files: " + fileNameCyr1 );
files = folder.getFilesByName(fileNameCyr1);
findFile(files);
Logger.log("Find files: " + fileNameCyr2 );
files = folder.getFilesByName(fileNameCyr2);
findFile(files);
}
function findFile(files) {
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName() + " " + file.getId());
}
}