Google表格脚本可查找数据并通过高级Google服务显示在弹出消息中

时间:2018-06-27 08:23:40

标签: google-apps-script google-sheets

我正在创建一个电子表格以记录租赁数据。

我在一张纸上(Clients有客户信息,而在另一张纸上有出租信息:

Rental

[ID]    [Name]  [Phone] [Product Code]  [Product Name]  [Price]

Clients

[Name]      [e-mail]   [Phone]

客户的唯一标识符是他们的电话号码。

为方便用户使用,在Rental页上,接待员使用客户端的名称记录所租用的设备,并且唯一ID(电话号码)用作记录中的隐藏数据。

当有多个具有相同名称的客户端时,我使用带有HtmlService.createTemplateFromFileSpreadsheetApp.getUi().showModalDialog的弹出窗口,接待员可以在其中单击所涉及的实际客户端的电话号码。

我被困在这一部分,在那里我根据Clients({{1上的活动行的第二列)中的数据,从工作表getRange(SpreadsheetApp.getActiveSpreadsheet.getActiveRange.getRow(),2中查找电话号码列表。 }}表。

我无法使用工作表的内置功能,例如Filter或通过API脚本查询。

如果可能的话,我真的想避免将整个项目迁移到google sql数据库。

任何建议或指示都值得赞赏。

1 个答案:

答案 0 :(得分:0)

1)定义“客户”工作表(“名称”)的查找字段
2)使用onEdit(e)触发器来处理“租借”工作表中的编辑事件,并检查第二列(名称)是否已被编辑。有关简单和可安装触发器的更多信息

https://developers.google.com/apps-script/guides/triggers/

https://developers.google.com/apps-script/guides/triggers/installable

3)从“客户”表的第一列(“名称”)中获取值:

 var rows = sheet.getRange(2, 1, sheet.getLastRow - 1, 1).getValues() 

并根据用户输入对其进行过滤。

    rows = rows.filter(function(row){ return row[0] == userInput });

如果返回的值大于1,则显示弹出窗口,并将变量传递给HTML模板。

if (values.length > 1) { //do something }

如果您对使用GAS不够自信,请参阅官方文档。