问题描述
我正在使用 Google Sheets API 创建电子表格。我想向此工作表添加一个 onEdit
函数,用于调用并执行 ajax 请求。
- 我想使用应用脚本 API 或电子表格 API 创建
onEdit
函数,例如:
// Following comment ensures UrlFetchApp authorization will be prompted:
// UrlFetchApp.fetch()
function onEdit(e) {
var range = e.range
var currentSheet = range.getSheet()
var sheetId = currentSheet.getParent().getId();
var url = 'https://example.com/synchronise?sheetId=' + sheetId;
var response = JSON.parse(UrlFetchApp.fetch(url).getContentText());
}
我想把它附加到我用 API 创建的工作表上。我的应用程序使用 Google OAuth,所以我希望我也可以处理进行外部调用所需的权限,作为 OAuth 身份验证过程的一部分(但很高兴当用户打开工作表时询问他们然后我怀疑可能是这种情况? )
所以我的问题是什么是方法
a) 创建一个脚本并将其附加到工作表 b) 以编程方式(或通过 API)让用户接受脚本调用的权限?
我想复制到一个工作表,点击工具->脚本编辑器并粘贴到函数中,但使用 API 来完成
解决方法
您可以使用 Apps Script API 添加 container-bound script。
做什么:
- 使用 container-bound script 方法创建 projecs.create。
要设置容器绑定脚本,您需要将电子表格文件 ID 分配给 parentId 参数
示例请求正文:
{
"title": "new","parentId": "spreadsheet file id"
}
- 在 project response body 方法的 projecs.create 中获取新创建的容器绑定脚本 ID。
示例响应正文:
{
"scriptId": "newly created script id","title": "new","parentId": "spreadsheet file id","createTime": "2020-12-25T23:33:48.026Z","updateTime": "2020-12-25T23:33:48.026Z"
}
- 使用 projects.updateContent 方法更新新创建的绑定脚本的内容并包含您的函数。
示例请求正文:
{
files: [{
name: 'hello',type: 'SERVER_JS',source: 'function helloWorld() {\n console.log("Hello,world!");\n}'
},{
name: 'appsscript',type: 'JSON',source: "{\"timeZone\":\"America/New_York\",\"" +
"exceptionLogging\":\"CLOUD\"}"
}]
}