Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 在多个工作表中搜索一个单词_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 在多个工作表中搜索一个单词

Google apps script 在多个工作表中搜索一个单词,google-apps-script,google-sheets,Google Apps Script,Google Sheets,大家好 我有一个包含多个表/页的表,我想在其中查找存储在单元格中的值。我通过绘画中的图片触发脚本。 在下面的例子中,我想搜索单词Test。使用我的方法,我需要在每个站点上手动搜索每个站点以查找单词。 单词 数 其他 试验 2. 嘿 基于此: 函数循环表(单元格){ //所有床单 var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets(); //环路 对于(变量i=0;ir.getRow()).join(”)orvar search\u

大家好
我有一个包含多个表/页的表,我想在其中查找存储在单元格中的值。我通过绘画中的图片触发脚本。
在下面的例子中,我想搜索单词Test。使用我的方法,我需要在每个站点上手动搜索每个站点以查找单词。

单词 数 其他 试验 2. 嘿 基于此:

函数循环表(单元格){
//所有床单
var sheets=SpreadsheetApp.getActiveSpreadsheet().getSheets();
//环路
对于(变量i=0;i
我相信你的目标如下

function searchString(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var search_string = sheet.getRange("J22:M23").getValue();
  var textFinder = ss.createTextFinder(search_string);
  var search_rows = textFinder.findAll().map(r => ({sheetName: r.getSheet().getSheetName(), row: r.getRow()}));
  var ui = SpreadsheetApp.getUi();
  ui.alert("search row: " + JSON.stringify(search_rows));
}
  • 您希望从Google电子表格中的所有工作表中搜索文本。
    • var search\u string=sheet.getRange(“J22:M23”).getValue()
      ,搜索字符串的值是一个文本
修改点:
  • 在脚本中,使用了类工作表的
    createTextFinder(findText)
    。在这种情况下,将从工作表中搜索
    findText
    。为了从Google电子表格中的所有工作表中搜索
    findText
    ,您可以使用类电子表格的
    createTextFinder(findText)
当上述各点反映到脚本中时,它将变成如下所示

function searchString(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var search_string = sheet.getRange("J22:M23").getValue();
  var textFinder = ss.createTextFinder(search_string);
  var search_rows = textFinder.findAll().map(r => ({sheetName: r.getSheet().getSheetName(), row: r.getRow()}));
  var ui = SpreadsheetApp.getUi();
  ui.alert("search row: " + JSON.stringify(search_rows));
}
修改脚本: 请按如下方式修改您的脚本

function searchString(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  var search_string = sheet.getRange("J22:M23").getValue();
  var textFinder = ss.createTextFinder(search_string);
  var search_rows = textFinder.findAll().map(r => ({sheetName: r.getSheet().getSheetName(), row: r.getRow()}));
  var ui = SpreadsheetApp.getUi();
  ui.alert("search row: " + JSON.stringify(search_rows));
}
  • 在此修改后的脚本中,作为示例输出值,将显示图纸名称和行号
参考资料:

是要搜索电子表格中的所有工作表,还是将搜索限制为活动工作表?是否要搜索范围J22:M23中的所有值。如果是这样,您应该使用.getValues(),然后在获得的数组中循环。如果要搜索单个值,则范围应为单个单元格。。。请澄清。好的,对不起。我想搜索电子表格中的所有工作表。J22:M23是一个连接的单元。有没有办法在搜索结果之后添加br?“我试过了\r\n但这不利于工作,而且您帮了我很多忙。”迈克尔·克拉普夫感谢您的回复。我很高兴你的问题解决了。关于你的新问题,虽然我不确定我是否能正确理解,但当你只想检索行号时,如何
var search\u rows=textFinder.findAll().map(r=>r.getRow()).join(
”)
or
var search\u rows=textFinder.findAll().map(r=>r.getRow()).join(“\n”)?如果我误解了你的新问题,我道歉。不,不,我真的认为我的问题措词不当。又来了。代码的输出是
搜索:[{“sheetName”:“Eingabe”,“row”:22},{“sheetName”:“Option1”,“row”:8},{“sheetName”:“Option1”,“row”:14},{“sheetName”:“Option5”,“row”:3}
但我希望它是
搜索:[{“sheetName”:“Eingabe”,“row”:22},
ui中的新行
{code>{“sheetName”:“Option1”,“row”:8}]
@Michael Krapf感谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,从你的回答中,我无法理解你提出新问题的目的。我能问一下你的新问题目标的细节吗?我想通过正确理解你的新问题来思考它的解决方案。我为此道歉。