谷歌脚本查看文本是不是包含值
Posted
技术标签:
【中文标题】谷歌脚本查看文本是不是包含值【英文标题】:Google Script to see if text contains a value谷歌脚本查看文本是否包含值 【发布时间】:2013-12-29 22:18:45 【问题描述】:我有一个谷歌表单,当用户提交它时,它会触发我的函数运行,该函数正在创建他们作为谷歌文档提交的内容的摘要。我知道它可以自动发送电子邮件,但我需要将其格式化为我的用户以后可以编辑的方式。
表单上有一些复选框——但 getResponse() 只填充了选中的项目,我需要它来显示所有可能的选择。然后我会以某种方式指出检查的内容。
我找不到查看文本是否包含值的方法。
就像在带有字符串的 Java 中一样,我可以做 .contains("9th")
或 .indexOf("9th") >=0
然后我会知道字符串包含第 9 个。我怎样才能用谷歌脚本做到这一点?浏览了所有文档,我觉得这一定是有史以来最简单的事情。
var grade = itemResponse.getResponse();
需要看看grade是否包含9th。
【问题讨论】:
如果您不知道,您可以使用 [markdown](StackOverflow/editing-help) 在帖子正文中格式化代码 sn-ps。这有助于使您的问题更加简洁易读。 【参考方案1】:我必须将.toString
添加到值数组中的项目。没有它,只有当整个单元格与searchTerm
匹配时,它才会匹配。
function foo()
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName('spreadsheet-name');
var r = s.getRange('A:A');
var v = r.getValues();
var searchTerm = 'needle';
for(var i=v.length-1;i>=0;i--)
if(v[0,i].toString().indexOf(searchTerm) > -1)
// do something
;
【讨论】:
【参考方案2】:我使用了 Google Apps 脚本方法indexOf()
,结果错误。所以我写了小函数Myindexof()
,而不是indexOf
:
function Myindexof(s,text)
var lengths = s.length;
var lengtht = text.length;
for (var i = 0;i < lengths - lengtht + 1;i++)
if (s.substring(i,lengtht + i) == text)
return i;
return -1;
var s = 'Hello!';
var text = 'llo';
if (Myindexof(s,text) > -1)
Logger.log('yes');
else
Logger.log('no');
【讨论】:
我认为你不需要例行公事。 .includes 将返回 true 或 false,并且可以检查 indexOf 的结果是否大于零。 var src = '你好!'; var 文本 = 'llo'; var idx = src.indexOf(text); Logger.log("indexOf(text) idx: " + idx ); // 结果:2 if (src.indexOf(text) > 0 ) Logger.log('Yes');否则 Logger.log('No'); // 结果:是 Logger.log("src.includes(text): " + src.includes(text) ); // 结果: true if (Myindexof(src,text) > -1) Logger.log('yes');否则 Logger.log('no'); // 结果:是 【参考方案3】:2020 年更新:
感谢V8 Runtime,您现在可以使用现代 ECMAScript 语法。
你可以使用includes():
var grade = itemResponse.getResponse();
if(grade.includes("9th"))do something
【讨论】:
不包含如何检查?if(!grade.includes("9th"))
@NoorHossain
感谢您的快速回复@Marios【参考方案4】:
Google Apps Script 是 javascript,您可以使用所有字符串方法...
var grade = itemResponse.getResponse();
if(grade.indexOf("9th")>-1)do something
您可以在许多网站上找到文档,例如 this one。
【讨论】:
谢谢!我发誓我尝试过,以及其他 20 种方法,但现在它可以工作了! 很高兴它有所帮助(我相信你确实做到了,但我猜某些细节一定是错误的,这样的事情会发生:-) - 请考虑接受答案。 注意:在 ECMAScript 6 (2015) 之前,endsWith() 和 starsWith() 不是 Javascript 标准,因此 Google Apps 脚本不支持这 2 个,即使它们位于您提供的 w3schools.com 链接中,当大多数浏览器都支持它们时。要支持这两个函数,可以添加 String.prototype.startsWith = function(prefix) return this.indexOf(prefix) === 0; String.prototype.endsWith = function(suffix) return this.match(suffix+"$") == suffix; ;如rickyrosario.com/blog/…以上是关于谷歌脚本查看文本是不是包含值的主要内容,如果未能解决你的问题,请参考以下文章