我有一个主电子表格,其中包含一个脚本,该脚本使用当前电子表格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复制了主表之后,没有任何函数运行。这是权限问题吗?如何使脚本在母版的任何后续副本中执行?
答案 0 :(得分:0)
通常,我对这种要求的处理方法是使用scripts.run中的Google Apps Script REST API方法。这样,您可以完全控制要执行的脚本和参数。
使用此方法必须满足的主要条件如下:
如果您需要更多详细信息,请参阅文档中的dedicated page,其中介绍了如何运行您的Apps脚本的特定方法,并且在其底部,您可以使用许多不同语言的a sample,包括python。
答案 1 :(得分:0)
现在,使用通过Google服务帐户进行身份验证的Drive API复制包含绑定的Google App脚本的工作表,由于Drive API中的错误(提交here),该脚本将始终无法使用。在此问题解决之前,没有简单的解决方案。
在我们的案例中,我们能够通过使用Sheets中的函数(特别是IMPORTDATA函数作为发送Web请求的一种方法)来消除对绑定脚本的使用。