从移动应用程序执行 Google Apps 脚本功能
Posted
技术标签:
【中文标题】从移动应用程序执行 Google Apps 脚本功能【英文标题】:Executing Google Apps Script Functions from Mobile App 【发布时间】:2016-01-27 05:02:00 【问题描述】:我正在为使用谷歌电子表格作为其数据库的用户开发一个界面。现在他使用 Google Sheet 移动应用程序(android 和 ios)来更新他的电子表格,我只是找不到任何方法来创建界面甚至调用移动应用程序上的函数。有谁知道如何从我在 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 脚本执行 API + Java 创建 Google 表单?
将身份验证从一个 Google Apps Script webapp 传递到另一个 Google Apps Script webapp