Google Sheets API - 创建应用程序脚本或将它们附加到使用 API 创建的电子表格

问题描述

我正在使用 Google Sheets API 创建电子表格。我想向此工作表添加一个 onEdit 函数,用于调用并执行 ajax 请求。

  1. 我想使用应用脚本 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

做什么:

  1. 使用 container-bound script 方法创建 projecs.create

要设置容器绑定脚本,您需要将电子表格文件 ID 分配给 parentId 参数

示例请求正文:

{
  "title": "new","parentId": "spreadsheet file id"
}
  1. 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"
}
  1. 使用 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\"}"
    }]
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...