我可能有一个愚蠢的问题,但找不到解决方法
我在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
?
答案 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;
}