【问题标题】:Query a Google Sheet from Google Apps Script从 Google Apps 脚本查询 Google Sheet
【发布时间】:2018-11-27 18:59:47
【问题描述】:

以前,我会使用 Google Visualization API 查询 Google 表格。由于身份验证问题,我一直在努力将我的 Google Chart 转换为使用 Google Apps Script。如何使用 Google Apps 脚本执行 GROUP BY 查询以发送到我的 Google Chart?

旧方式(Google 可视化 API)

function getCurrentData() {
   URL = 'https://docs.google.com/spreadsheets/d/SHEET_ID/gviz/tq?gid=2017811003&headers=1';
   var query = new google.visualization.Query(URL);

   var queryString = 'SELECT A, B, C GROUP BY A, B';
   query.setQuery(queryString);
   query.send(drawChartFunct);
}

新方法(Google Apps 脚本)

function getCurrentData() {
  var ssID   = "SHEET_ID",
      sheet  = SpreadsheetApp.openById(ssID).getSheets()[2],
      data   = sheet.getRange("A1:C13").getValues()

   ??Query_Code??

  return data;
}

【问题讨论】:

  • 你走运了!您仍然可以使用 Google Apps 脚本中的可视化 API。 I wrote a wrapper for it as answer to a previous question。享受吧!
  • @Dimu Designs - 感谢您分享脚本。一切正常,但由于某种原因,我得到一些标题值的“null”。
  • 例如var result = Utils.gvizQuery(ss.getId(), "SELECT A, B, C, D, E", 0, 0); 将返回[[null, null, null, null, null], [Date(2017,4,1), 120145, 28750, 12555, 161450],...] 标头未正确捕获。
  • +Clarkus978 Google 工作表行从 1 开始(在大多数与软件编程相关的情况下,它们不是零索引)。所以试试这个:var result = Utils.gvizQuery(ss.getId(), "SELECT A, B, C, D, E", 0, 1); 注意:你会得到一个对象数组,其中每个对象都有属性,其键是标题。

标签: javascript google-apps-script google-sheets


【解决方案1】:

getValues 返回一个数组数组(二维数组/多维数组)。 Google Apps 脚本不包含处理此类对象的自己的方法,因此您应该使用 JavaScript,“vanilla” JavaScript 或库。

【讨论】:

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