【问题标题】:Google Script in spreadsheet copy does not execute电子表格副本中的 Google 脚本不执行
【发布时间】:2023-03-22 00:55:01
【问题描述】:

我有一个主电子表格,其中包含一个脚本,该脚本使用当前电子表格 ID 向我的服务器 onEdit 发出 POST 请求。

function post2Server(){
  ss = SpreadsheetApp.getActiveSpreadsheet();

  payload                   = {};
  payload['spreadsheet_id'] = ss.getId();

  headers = {
    'Content-Type': 'application/json',
    'Accept'      : 'application/json'
  }

  options = {
    'method'     : 'post',
    'contentType': 'application/json',
    'headers' : headers,
    'payload' : JSON.stringify(payload)
  }

  res = UrlFetchApp.fetch(MY_SERVER_URL, options);
  return;
}

此功能在母版表上按预期工作。现在,当我使用 python google API 创建此主表的副本时,脚本复制过来,但是,不会运行。我收到一条错误消息......

发生服务器错误。请再次尝试保存项目。

为什么不运行?在电子表格的副本中,我什至创建了一个新函数,它只记录“hello”并收到相同的错误。在 Python SDK 复制主表后,似乎没有运行任何函数。这是权限问题吗?如何让脚本在主表的任何后续副本中执行?

【问题讨论】:

  • 这将是一个新项目。尝试删除清单 appsscript.json。你需要重新认证
  • 目的是以编程方式完成。我们不能要求我们的用户对电子表格的每个副本都这样做。
  • 嗯,首先,它可以手动工作吗?如果是这样,您可以尝试ScriptApp.invalidateAuth()重新授权。
  • @yesyoukenn 感谢您的回复。复制方法可能存在问题。那么您能否提供详细信息,包括您正在使用的复制电子表格的脚本?如果可以,请更新您的问题。
  • 您说:Seems that no function, even something as simple as logging, executes with the error: 这意味着您问题中的代码无关紧要。考虑使用 cmets 中的所有信息完全重写您的问题,并进行更多研究。请阅读minimal reproducible exampleHow to Ask

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


【解决方案1】:

通常我对这种要求的处理方法是使用Google Apps Script REST APIscripts.run 方法。通过这种方式,您可以完全控制要执行的脚本和参数。

使用此方法需要满足的主要条件如下:

  • 将脚本项目部署为 API 可执行文件
  • 为执行提供适当范围的 OAuth 令牌
  • 确保脚本和调用应用程序共享一个通用的 Cloud Platform 项目

如果您想了解更多详细信息,文档中有一个 dedicated page,它解释了如何运行您的 Apps 脚本的特定方法,在它的底部您有许多不同语言的 a sample,包括 python。

【讨论】:

    【解决方案2】:

    现在,由于 Drive API 中的错误(归档 here),使用通过 Google 服务帐户验证的 Drive API 复制包含绑定的 Google App 脚本的工作表将始终导致脚本无法使用。在解决此问题之前,没有简单的解决方案。

    在我们的例子中,我们能够通过利用表格中的函数来消除对绑定脚本的使用,特别是 IMPORTDATA 函数作为发送网络请求的一种方式。

    【讨论】:

      猜你喜欢
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多