【问题标题】:HTTP Get response in Typescript to get data from google spreadsheetsHTTP 在 Typescript 中获取响应以从谷歌电子表格中获取数据
【发布时间】:2021-08-20 09:43:31
【问题描述】:

我在Node JSTypecript 有一个项目,我正在与google spreadsheets 合作。

现在我从以下URL 的google API 获取数据:https://developers.google.com/drive/api/v3/reference/files/get 我在fileId 字段中添加电子表格的ID,在supportsAllDrives 字段中添加true 和字段(id、name、modifiedTime )

HTTP 响应如下: 获取https://www.googleapis.com/drive/v3/files/{fileId}

我想要的是在 TypeScript 中使用我在 URL 中添加的属性(fileID 和 supportsAllDrives?

我的问题:如何在 Typescript 代码中使用 fileID 和 supportsAllDrives 属性形成 HTTP 响应?

【问题讨论】:

  • POST 请求不会将参数放入 url,而是将数据对象放入正文。我认为文档中有很多示例。
  • @idfurw 从我输入的 API 的 URL 中,我没有问题。我的问题是,我怎样才能从 Typescript 代码中做到这一点?
  • 我不确定我是否理解您想要实现的目标;你能提供更多细节吗?所以基本上你只想在 TypeScript 中发出请求?
  • @ale13 我想形成 API 提供的 URL:GET googleapis.com/drive/v3/files/[fileId}。使用 supportsAllDrives 和 fields 属性,以及我在问题中显示的数据

标签: typescript google-sheets google-api google-sheets-api


【解决方案1】:

也许这可能是一个答案......这里你有一个从电子表格生成 json 对象的函数。您可以包含在打字稿中。

function getJson(id,gid){
  var txt = UrlFetchApp.fetch(`https://docs.google.com/spreadsheets/d/${id}/gviz/tq?tqx=out:json&tq&gid=${gid}`).getContentText();
  var jsonString = txt.match(/(?<="table":).*(?=}\);)/g)[0]
  var json = JSON.parse(jsonString)
  return(json)
}
  • 带有电子表格的 id 和工作表的 gid(可能为 0)
  • 请注意,第一行专用于标签,然后 rows[0] 对应于第 2 行,c[0] 对应于 A 列
  • 如果要检索 B1(第 2 列第 1 行):json.cols[1].label
  • 如果要检索 B2(第 2 列第 2 行):json.rows[0].c[1].v

【讨论】:

  • 这很好,但我想使用google api来检索信息。我首先想知道的是如何将supportsAllDrives 和fields 属性添加到我在问题中提出的URL googleapis.com/drive/v3/files/[fileId}
【解决方案2】:

还是这个,更适合html页面

<script>

function reqListener () {
  var jsonString = this.responseText.match(/(?<="table":).*(?=}\);)/g)[0];
  var json = JSON.parse(jsonString);
  return json
}

var id = '______your_id_______';
var gid = '____your_grid_id___';
var url = 'https://docs.google.com/spreadsheets/d/'+id+'/gviz/tq?tqx=out:json&tq&gid='+gid;
var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", url, true);
oReq.send();
 
</script>

【讨论】:

    【解决方案3】:

    您要发出的请求将如下所示:

    • HTTP
    GET https://www.googleapis.com/drive/v3/files/FILE_ID?supportsAllDrives=true&fields=id%2C%20name%2C%20modifiedTime&key=[YOUR_API_KEY]
    
    • 打字稿
    const drive = google.drive({version: 'v3', auth});
    drive.files.get{
        fields: 'files(id, name, modifiedTime)',
        supportsAllDrives: true
    }
    

    参考

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多