在DriveApp searchFiles查询中使用变量的值

时间:2018-06-28 11:10:53

标签: google-apps-script google-drive-api

我可能有一个愚蠢的问题,但找不到解决方法

我在Google驱动器中浏览了很多文件,每个文件中都有一个0-10000范围内的数字,所以我做到了:

for(var i = 0; i < 10000; i++)
{
  var test = "IT" + i;
  Logger.log(test);
  var search = DriveApp.getFolderById("ID")
                       .searchFiles('fullText contains test');
  Logger.log(search);
  while (search.hasNext()) {
    var file = search.next();
    if(search.hasNext())
      break;
    Logger.log(file.getName());
  }
  ...

我的问题是,如何放置这样的变量:

.searchFiles('fullText contains $variable');

以便我可以使用变量test的值,即“ IT0”,而不是文字字符串test

2 个答案:

答案 0 :(得分:0)

要在字符串中添加双引号时,必须使用转义序列。因此,您的字符串将是: 'fullText包含\“ IT \”'

答案 1 :(得分:0)

根据Drive REST API documentation

  
      
  • contains运算符仅对fullText的整个字符串标记执行匹配。例如,如果文档的全文包含字符串 HelloWorld ,则仅查询fullText contains 'HelloWorld'返回结果。在这种情况下,诸如fullText contains 'Hello'之类的查询不会返回结果。
  •   
  • 如果contains运算符与精确的字母数字短语匹配,并且用双引号引起来。例如,如果文档的fullText包含字符串 Hello there world ,则查询fullText contains '"Hello there"'将返回结果,但查询fullText contains '"Hello world"'不会返回结果。此外,由于搜索是字母数字,因此如果文档的fullText包含字符串 Hello_world ,则查询fullText contains '"Hello world"'将返回结果。
  •   

comments中,您提到您尝试过searchFiles('fullText contains "IT"' + test),它不符合所需的搜索子句语法-它的计算结果类似于fullText contains "IT"0(或fullText contains "IT"IT0,具体取决于是否您更改了其他代码部分),而不是fullText contains "IT0"

在调试基于变量的查询中的错误时,一种好的做法是先执行构造操作(以便您可以准确地记录查询),然后实际执行查询:

var myQuery = "fullText contains \"" + myVar + "\"";
// var mySingleQuotedQuery = "fullText contains '" + myVar + "'";
try {
  /* use myQuery */
}
catch (err) {
  err.message = "Error using 'myQuery': " + err.message;
  // Log debug info to StackDriver:
  console.error({message: err.message, error: err, query: myQuery, variable: myVar});
  throw err;
}