0

我想创建一个 Google Apps 脚本来执行以下操作:当我在电子表格(例如记录销售额的电子表格)中选择一个包含人员姓名的单元格并使用菜单按钮调用该函数时,脚本使用该人的姓名(或他的文档编号)在另一个电子表格中进行搜索(查询),该电子表格存储完整的消费者数据,其中包含我需要从该消费者那里生成合同或付款收据的所有信息。使用 Google Apps 脚本从另一个电子表格中的一个电子表格搜索信息的最佳策略是什么?您是否有一些具有与此类似的实现的脚本示例?提前感谢您的任何帮助/指导!

4

1 回答 1

2

单元格选择不会触发事件,您必须使用菜单项或按钮来调用该函数,或者,如果您的用例可以接受,则编辑单元格以触发onEdit事件。

“搜索部分”实际上非常简单,电子表格本身或另一个电子表格中的数据并不重要,它只会改变您访问数据的方式(getActiveSpreadsheetopenById())。从那里获取所有值并在生成的二维数组中进行搜索。


在您的评论之后编辑:这是一个返回找到的单元格范围的代码示例(我们得到 A1 表示法,但我们 getValue() 当然也可以。)

function test(){ // to test the find function with an argument, 'any' in this case 
  var result = findItem('any');
  if(result){Logger.log(result.getA1Notation())}else{Logger.log('no luck !')};
}

function findItem(item){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = ss.getDataRange().getValues()
  for(var n = 0;n<data.length;++n){
    if(data[n].indexOf(item)>-1){ // this is a "strict" find, ie the value must be the entire search item. If you want to do partial match you should compare differently...
      return (ss.getRange(n+1,data[n].indexOf(item)+1)); // if found return the range. note the +1 because sheets have 1 index while arrays have 0 index
    }
  }
  return false;// if we come to the end of sheet without result...
}
于 2013-11-01T13:29:47.033 回答