【问题标题】:call a Google Spreadsheets Apps Script function from Google Sheets API v4从 Google Sheets API v4 调用 Google Spreadsheets Apps Script 函数
【发布时间】:2017-12-28 20:58:31
【问题描述】:

我有一个 Spreadsheet 绑定了一些 Apps Script 函数。

我还有一个Android 客户端使用Google Sheets API v4 与该电子表格进行交互。

Android 客户端有没有办法调用/运行Apps Script 代码中的某些函数?

我需要在Apps Script 端而不是简单地在Android 客户端上运行代码的原因是,当文档发生问题时我会发送一些电子邮件,并且我想要电子邮件从电子表格的所有者帐户发送,而不是从通过 API 验证的 Android 用户发送。

我知道我可以通过向文档添加行来隐式触发函数,但是有没有办法直接运行特定函数?

【问题讨论】:

    标签: android google-apps-script google-sheets-api


    【解决方案1】:

    是的。您可以将GET and POST requests 设为 Google 应用程序脚本。从任何可以进行 REST 类型调用的地方,包括客户端。如果您需要身份验证,还有应用程序脚本client libraries. 我写了一个简短的脚本,用于从一个应用程序脚本的请求通过电子邮件发送到另一个here。但是,如果您也从客户端调用电子邮件脚本,它会起作用。

    【讨论】:

    • 谢谢!这可以工作,但任何人都可以触发我的功能,有什么方法只允许有权访问我的 Google 电子表格的用户触发此功能?
    • 您可以在组合中包含自定义身份验证令牌。将其作为参数添加到请求中或正文中。当请求到达端点时,检查自定义身份验证令牌是否与您存储在端点变量中的身份匹配。
    【解决方案2】:

    将您的 Google Apps 脚本部署为 Web 应用程序 >reference,通过这种方式您可以运行函数 Get(e)Post(e) 并调用其他函数在其中一个条件下......

    【讨论】:

      【解决方案3】:

      您可能已经得到了问题的答案。以防万一,以下几点可能有助于您的发展:

      1) 像往常一样创建服务器端脚本(即 Google Apps 脚本)函数:

      function myFunction(inputVar) {
      // do something
      return returnVar;
      }
      

      2) 创建如下所示的 doGet(e) 或 doPost(e) 函数 - 可以与 1) 中的函数在同一个 .gs 文件中:

      function doGet(e) {
      
          var returnVar = "";
          if (e.parameter.par1 != null) {
              var inputVar = e.parameter.par1;
              returnVar = myFunction(inputVar);
          }
      
          return HtmlService.createHtmlOutput(returnVar);
      
      }
      

      3) 将您的项目发布并部署为 webapp。记下部署的 URL。

      4) 从您的 Android 客户端使用以下 URL 进行 HTTP 调用:your_webapp_url?par1="input value"

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-10-13
        • 2018-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多