【问题标题】:Run Python code on Google Form submission or Google Sheet update在 Google 表单提交或 Google 表格更新上运行 Python 代码
【发布时间】:2021-11-02 23:06:03
【问题描述】:

我创建了一个 Google 表单。当有人填写并提交时,我想使用提交答案运行一些 Python 代码。

我当前的系统有一个与 Google 表单相关联的 Google 表格,该表格会不断更新新答案。然后,我在我的 PC 上用 Python 运行了一个无限循环,它抓取数据库中的工作表内容并检查它们是否有变化。如果有,请使用新条目运行代码。

这个过程需要我在我的电脑上不断地运行一个无限循环,这不是很好。

有人有什么建议吗?

【问题讨论】:

  • 只是向你抛出一些想法,所以不要引用我,但是;如果有“提交”操作,使用谷歌表/表单,你能控制触发该事件后会发生什么吗?如果是这样,您也许可以使用 AWS Lambda(事件驱动的代码执行)。如果您需要无限循环,而不是在您的 PC 上,您可能需要开始考虑设置一个小型云服务器。我只使用 AWS EC2 完成了此操作,因此这是我的建议,但我绝不是专家......
  • 你知道 EC2 是否有像 lambda 这样的免费层吗?
  • 对不起,我不以为然。可能还有一些其他服务更适合您的用例,EC2 就是我所拥有的经验,这就是我提到它的原因。
  • 我可能会考虑使用 web 应用程序来为您的 python 代码和端点提供访问您尚未查看的最新提交的队列。并让谷歌应用程序脚本维护从表单提交触发器收集所有新提交的过程,该触发器具有提供所有提交数据的事件对象。

标签: python google-apps-script google-sheets google-api google-forms


【解决方案1】:

这可以通过使用 Cloud Functions 轻松解决!

Google Cloud Functions 是用于构建和连接云服务的无服务器环境,它用于创建无需服务器或运行时响应事件的单一用途函数。它们在被监视的事件被触发时被触发。

因此,您应该首先在 Google Cloud Platform 中创建一个 Cloud Function,根据需要对其进行配置,然后将 Python 代码连同依赖项一起输入到编辑器中:

之后,您可以使用以下函数轻松地从 Apps 脚本触发此函数(假设 triggerCloudFunction 是发送表单提交时运行的函数):

function triggerCloudFunction() {
  const response = UrlFetchApp.fetch(
    'CLOUD_FUNCTION_TRIGGER_URL',
    {
      method: 'GET',
      muteHttpExceptions: true,
      headers: {
        'Authorization': `Bearer ${ScriptApp.getIdentityToken()}`
      }
    }
  )
  console.log(response.getContentText())
}

为了使这项工作正常进行,您还必须在 appsscript.json 清单文件中包含 openid 范围。

参考

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多