从移动应用程序执行 Google Apps 脚本功能

Posted

技术标签:

【中文标题】从移动应用程序执行 Google Apps 脚本功能【英文标题】:Executing Google Apps Script Functions from Mobile App 【发布时间】:2016-01-27 05:02:00 【问题描述】:

我正在为使用谷歌电子表格作为其数据库的用户开发一个界面。现在他使用 Google Sheet 移动应用程序(androidios)来更新他的电子表格,我只是找不到任何方法来创建界面甚至调用移动应用程序上的函数。有谁知道如何从我在 Google 表格移动应用程序上创建的脚本中调用函数?谢谢!

【问题讨论】:

您需要创建一个独立的应用程序,该应用程序将从 HTTPS GET 或 POST 请求执行到 Apps Script “exec” url。在 Apps 脚本代码编辑器中,您必须将脚本部署为 Web 应用程序。要么,要么您需要使用 Google Sheets API。我对Android一无所知,所以我不知道你需要做什么来触发这个过程。在任何情况下,您都需要一种向独立 Web 应用程序或 API 发出 HTTPS GET 或 POST 请求的方法。 webapps.stackexchange.com/a/87361/27487 对我很有帮助。 【参考方案1】:

以下内容适用于移动版 Google 表格:

Custom functions onEdit 触发器 onSelectionEvent 触发器(部分工作,如果工作表也在桌面上打开)

注意事项:

避免调用获取active:getActive() 工作表、范围或单元格。这些在移动设备中不起作用,或者它们在第一张表中返回一个默认值,例如 A1 作为范围。

避免调用ui:getUi()。这些在移动应用程序的上下文中没有意义,也不会起作用。这包括对警报/提示的调用。您很可能会遇到执行超时,因为警报将等待用户输入,而这不会显示在移动设备中。如果您确实想显示一些信息,Here 是一个很好的解决方法,使用图像来做同样的事情。

避免致电htmlService。移动版本不支持侧边栏/模式对话框。

按钮/菜单项不起作用。

支持应用程序脚本的最佳方法是移动应用程序是将onEdit 调用链接到复选框。点击here查看示例。

【讨论】:

【参考方案2】:

2020 年 9 月更新

这个答案可能不再重要,因为谷歌在过去一年改变了很多事情。


您无法通过 Google Sheets 移动应用执行 Google App Script 函数(gas 函数)。

替代方案 #1:(自 2019 年 6 月起已弃用 - 这不再可能)

创建 Android 插件

来源:https://developers.google.com/apps-script/add-ons/mobile/

Android 插件可以利用 Apps Script Execution API 直接调用 Apps Script 项目中的函数。这允许 Android 插件使用标准的 Apps 脚本技术从 Google Doc 或 Sheet 中检索和操作数据。就像桌面插件一样,Android 插件允许您制作自定义用户界面 - 但您可以使用 Android 平台的全部功能。

备选方案#2

创建一个网络应用并使用 Google 的 Execution API

来源:https://developers.google.com/apps-script/guides/rest/api

Apps Script Execution API 由单个脚本资源组成,该资源具有单个方法 run,可调用特定的 Apps 脚本函数

【讨论】:

使用备选方案 2,创建的 App 如何在 Google Sheets 中运行? 我在这里提到的网络应用程序是一个可以操作 Google 电子表格的外部应用程序,而无需使用 UI(API 调用)。如果您想在您的手机中运行 Google Apps 脚本功能 - 您不能。一种解决方法是使用 Chrome 浏览器打开电子表格并勾选桌面站点,刷新,然后它就会工作。我讨厌这个解决方案,可惜它仍然是不可能的

以上是关于从移动应用程序执行 Google Apps 脚本功能的主要内容,如果未能解决你的问题,请参考以下文章

使用 Google Apps 脚本自动将标签移动/应用到 Gmail

Google Apps 脚本根据文件名将我的驱动器文件移动到团队驱动器文件夹

如何从 Google Apps 脚本授权 Google Speech-to-text?

Google Apps 脚本 6 分钟执行时间限制

如何使用 Google Apps 脚本执行 API + Java 创建 Google 表单?

将身份验证从一个 Google Apps Script webapp 传递到另一个 Google Apps Script webapp