Google apps script 使用变量';DriveApp searchFiles查询中的s值

Google apps script 使用变量';DriveApp searchFiles查询中的s值,google-apps-script,google-drive-api,Google Apps Script,Google Drive Api,我可能有个愚蠢的问题,但我找不到解决办法 我在我的谷歌硬盘中浏览了很多文件,每个文件中都有一个0-10000范围内的数字,所以我做了如下: for(var i = 0; i < 10000; i++) { var test = "IT" + i; Logger.log(test); var search = DriveApp.getFolderById("ID") .searchFiles('fullText contains te

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

我在我的谷歌硬盘中浏览了很多文件,每个文件中都有一个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());
  }
  ...

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

当您要在字符串中添加双引号时,必须使用转义序列。所以你的字符串应该是: “全文包含”它“

根据:

  • contains
    运算符仅对
    全文
    的整个字符串标记执行匹配。例如,如果文档的全文包含字符串HelloWorld,则查询
    全文包含“HelloWorld”
    将返回结果。像
    fullText这样的查询包含“Hello”
    在这种情况下不会返回结果
  • 包含
    运算符,如果该运算符被双引号括起,则该运算符与字母数字短语完全匹配。例如,如果文档的
    fullText
    包含字符串Hello there world,则查询
    fullText包含“Hello there”
    将返回结果,但查询
    fullText包含“Hello world”
    将不返回结果。此外,由于搜索是字母数字的,如果文档的
    fullText
    包含字符串Hello\u world,则查询
    fullText包含“Hello world”
    将返回结果
在您提到的内容中,您尝试了不符合所需搜索子句语法的
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;
}

.searchFiles('fullText包含'+yourVariable);
尝试了您的方法,
searchFiles('fullText包含“IT”+test)
-不起作用。我收到错误:无效参数:q(第18行,文件“test”)我有点想这样做,但不幸的是它不起作用。原始公式看起来像这样
.searchFiles>('fullText contains“IT2595”);
那么你是否尝试在双引号前添加反斜杠?哦,天哪,我在这一页上,但没有在下面这样做。非常感谢,现在是wokring。
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;
}