将脚本触发器添加到可在Android移动应用中使用的Google表格


13

我有一个Google表格,其中包含单击按钮时应运行的脚本。推荐的方法(据我所知)是插入图像,然后将脚本附加到有问题的图像。

只要我在桌面上打开工作表,它就可以正常工作。但是,如果我在Android Google表格应用中打开表格,则该图像根本不会出现。据我所知,这种行为(缺乏)在任何地方都没有记录,但是我发现很多人都遇到同样的问题。

我想知道如何解决这个问题。我是否错过了一些显而易见的事情,这些事情会使我的图像在Android应用程序中可见?还是有另一种简单的方法可以将脚本触发器添加到可以在移动设备上工作的工作表中?


2
这确实是Android的本地Sheets应用程序存在的问题,不是吗?您的问题可能对Android Enthusiasts更好。
ale 2015年

1
@AlE。这是一种查看方法,但是要解决此问题,需要Google表格知识,而不是Android知识。

@Normal:这就是为什么我问这个问题(并且没有投票关闭)。我只是想帮助Asker吸引获得答案所需的专家。
ale 2015年

Answers:


26

目前,在Sheets Android应用中似乎无法使用图像或自定义菜单项。我建议在电子表格中创建一个“功能菜单”。例如:

  1. 单元格A1说“选择功能”
  2. 单元格B1具有数据验证规则,该规则将内容限制为您拥有的功能的名称。在我的示例中,它们是“ insertSomething”和“ convertSomething”。(不要在数据验证对话框中选中“显示帮助”,“帮助”弹出窗口会在移动设备上带来麻烦。)
  3. onEdit每次编辑时都会运行一个脚本功能(简单触发器),以检查B1的内容是否已更改。如果是这样,它将运行适当的功能。

这是我的代码,其中包括两个用于演示的功能:

function onEdit(e) {
  if (e.range.getA1Notation() == 'B1') {
    if (/^\w+$/.test(e.value)) {        
      this[e.value]();
      e.range.clear();
    }
  }
}

function insertSomething() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(2,3).setValue('inserted something');
}  

function convertSomething() { 
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(3,3).setValue('converted something');
}  

条件/^\w+$/.test(e.value)只是检查我们有一个非空字符串,并且没有执行有人以某种方式放入单元格B1中的恶意代码。在调用函数后this[e.value]();this引用全局对象并包含函数名称),将清除B1的内容。一个可以选择再次运行相同的功能,也可以选择另一个。

作为概念验证,这是该应用程序的屏幕截图。屏幕截图1:选择一个功能

选择

屏幕截图2:函数运行后

后

参考文献


1
只要不使用被调用的函数来发送电子邮件,此方法就起作用。电子邮件无法由编辑侦听器触发,因此按钮/自定义菜单问题确实很有限。
10klines

2
@ 10klines在这种情况下,将简单onEdit触发器更改为可安装的触发器,该触发器将在安装触发器的用户授权下运行。

如果需要,可以使用复选框来触发功能,而不是图片或数据验证。在我的平板电脑上,eval功能无法正常工作,因此我为每个功能设置了一堆复选框。我相应地调整了代码,并且工作正常。提示:如果您有平板电脑,请不要使用“消息框”-由于某些原因无法使用。
Tobias Sarnow

这是一个很好的解决方案,但是如果调用该函数进行API调用并从中获取响应(因为它正在请求Google批准),则该方法不起作用。有没有解决的办法?
JB

1
@JB使用可安装的编辑触发器
TheMaster
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.