【问题标题】:Google Apps script filename lookup failureGoogle Apps 脚本文件名查找失败
【发布时间】:2013-12-10 15:07:34
【问题描述】:

我有一个通过(唯一)文件名查找文件的脚本:

function getFileByName(filename) {
  var files = DocsList.getRootFolder().find("title:" + '"' + filename + '"');    
  Logger.log("looking for " + filename);
  for( var i in files){
    Logger.log("checking " + files[i].getName());
    if ( files[i].getName() == filename ) 
    {
      Logger.log("found " + files[i].getName());
      return files[i];
    }
  } //for i in files    
  Logger.log("did not find " + filename);
} //getFileByName_

几个月来,它就像一种魅力,直到昨天。现在循环似乎没有运行(我添加了Logger.log("checking " + files[i].getName()); 行进行调试,但我从未在日志中看到它。

任何想法(或其他调试想法?)?谢谢!

【问题讨论】:

  • files.length 的输出是什么?
  • 一步一步调试。您确定该文件在根目录中而不是在另一个子文件夹中吗?如果没有,请不要使用 getRootFolder 并直接在整个驱动器或另一个文件夹中搜索。
  • files.length = 0。它肯定在根目录中,正是过去三个月的位置。有没有不同的功能。但是,它会搜索整个驱动​​器?感谢您的想法。
  • 当我读到你的问题和答案时,我只是看不到两者之间的联系......我误解了什么还是你能解释一下吗?
  • 您明确表示您的原始代码曾经可以工作几个月,是这样吗?为什么然后删除标题解决了问题?

标签: google-apps-script


【解决方案1】:

删除“标题”并在下面的代码中查找文件名。

function getFileByName(filename) {
var files = DocsList.getRootFolder().find(filename);    
Logger.log("looking for " + filename);
for( var i in files){
 Logger.log("checking " + files[i].getName());
if ( files[i].getName() == filename ) 
{
  Logger.log("found " + files[i].getName());
  return files[i];
}
} //for i in files    
Logger.log("did not find " + filename);
} //getFileByName_

【讨论】:

  • 这行得通,但我之前尝试过var file = DocsList.getRootFolder().find("Reassessment Requesttemp");,这是我传递给它的值。知道为什么他们不给出相同的行为吗?
  • 对不起,我没有理解你的尝试。你能再解释一下吗?
  • @DeltaG- 我能问一下您为什么要搜索“标题:文件名”而不是首先搜索文件名吗?你的选择背后的想法是什么?
  • @braraujo:文件名的值始终是“重新评估请求临时”。我也试过var file = DocsList.getRootFolder().find("Reassessment Requesttemp");,但没用。在我看来,它们应该是等价的。
  • @Sergeinsas:当我最初将代码放在一起时,这就是工作所需要的。据我了解,.find() 方法默认在内容中搜索字符串,而我是按名称查找文件。我从 SO 的其他地方得到了这种方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-01
  • 2021-06-08
  • 1970-01-01
相关资源
最近更新 更多