我想要创建一个Google Apps脚本来执行以下操作:当我选择一个包含电子表格中一个人的名字的单元格(例如,一个记录销售的电子表格),并使用一个菜单按钮调用该函数时,该脚本在另一个电子表格中进行搜索(查询),该电子表格存储完整的消费者数据,并包含我从该消费者那里需要的所有信息,以生成合同或付款收据。使用Google脚本实现从另一个电子表格中的电子表格中搜索信息的最佳策略是什么?您有类似于此实现的脚本示例吗?谢谢您的任何帮助/指导!
发布于 2013-11-01 13:29:47
没有由单元格选择触发的事件,您必须使用菜单项或按钮来调用函数,或者,如果用例可以接受,则编辑单元格以触发onEdit事件。
“搜索部分”实际上非常简单,电子表格本身或另一个电子表格中的数据并不重要,它只会改变您访问数据的方式( getActiveSpreadsheet或openById())。从那里获取所有的值,并在结果的2D数组中进行搜索。
在您的注释之后进行编辑:这里是这样一个代码的示例,它返回找到的单元格的范围(我们得到了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...
}https://stackoverflow.com/questions/19727587
复制相似问题