我有数百个Google电子表格,它们都具有相同的脚本。我想通过PostgreSQL或Bash中的ID执行特定的Google电子表格。有执行脚本的简便方法吗?我宁愿不必学习python。
例如,我的电子表格ID为1HGo8V-P5S-z4oCUiAKULrkZRFlzRHEalJqUFLiP
,并且我想通过Bash或Postgresql执行函数Refresh()
。
API是唯一的途径吗? https://developers.google.com/apps-script/api/how-tos/execute
到目前为止,我的考虑是创建一个python可执行文件并从postgresql函数执行它。 https://developers.google.com/apps-script/api/quickstart/python
编辑::如果我想执行任何应用程序脚本,则每个电子表格都需要一个Google项目(手动创建)。必须有一种更简单的方法来执行此操作,为每个电子表格手动创建项目都没有意义。
参考:https://developers.google.com/apps-script/api/how-tos/execute
被调用的脚本和调用的应用程序必须共享一个云 平台项目。
解决方案: @Tanaike
最终使我可以使用部署Web应用程序答案 0 :(得分:1)
如果我的理解正确,那么这个答案如何?
我认为这是您遇到的难题。在当前阶段,还没有方法可以从父级Google文档(在本例中为Spreadsheet)中检索容器绑定脚本的项目ID。
https://script.google.com/home/projects/### projectId ###
的URL上看到项目ID。在上述情况下,需要从要运行脚本的每个电子表格中手动检索项目ID。抱歉,无法找到这种情况的解决方法。
我认为执行脚本有两种模式。您可以从2种模式中进行选择。
我认为在这种模式下,脚本可以很简单。
我认为在这种模式下,访问方法可能很简单。
如果这不是您想要的,我表示歉意。
通过讨论,我认为对于您的脚本Refresh()
,以下流程是合适的。
1.使用Refresh()
脚本(如API)部署Web Apps。
2.使用python脚本和curl调用API。
这样,将运行Web Apps脚本,并且您可以反映所有电子表格的Refresh()
的结果。
function doGet() {
var spreadsheets = ["spreadsheetId1", "spreadsheetId2",,,]; // Please set spreadsheet ID here.
for (var i = 0; i < spreadsheets.length; i++) {
SpreadsheetApp.openById(spreadsheets[i])
.getSheetByName("Sheet1") // If you want to also put values to other sheet, please modify this.
.getRange(1, 1)
.setValue(new Date());
}
return ContentService.createTextOutput("Done.");
}
在请求使用Web Apps之前,请先部署Web Apps。
如果使用curl命令,请按以下方式使用。
$ curl -L "https://script.google.com/macros/s/#####/exec"