【问题标题】:call function which writes array to range调用将数组写入范围的函数
【发布时间】:2012-09-05 09:51:58
【问题描述】:

我正在尝试更改我的脚本以在 Google Docs 中使用新的 Google Analytics API。

我完全能够从 api 中以数组形式检索我的数据,如下所示:

[[“01”、“5”、“5”]、[“02”、“0”、“0”]、[“03”、“2”、“2”]、[ “04”、“2”、“6”]、[“05”、“46”、“73”]、[“06”、“15”、“18”]、[“07”、“7”、 "7"]]

我寻求帮助的地方是如何将其写入单元格。我曾经使用 v2 API 这样做,但在这里苦苦挣扎。 (只是不明白为什么我的旧方法不起作用)。

我想做的事:

  1. 从单元格调用函数(随机选择)

  2. 将数组中的结果拖放到工作表中的某个范围内。我调用函数的单元格应该是第一个写入数据的单元格。

函数的开头是:

function testAnalytics() {

      var id = "ga:XXXXXXXX";
      var startdate = "2012-01-01";
      var enddate = "2012-07-31";
  var metrics = "ga:visits, ga:pageviews";
  var optArgs = {dimensions: "ga:month"};
  var grabData = Analytics.Data.Ga.get(id,startdate, enddate,metrics,optArgs); 
//  Browser.msgBox(grabData.getRows()); // test to see if data is correctly received 
  var returnVal = grabData.getRows();
  return returnVal; 

/* write returnVal to active cell on active spreadsheet */

}

【问题讨论】:

    标签: arrays range google-apps-script


    【解决方案1】:

    试试

    var sheet = SpreadsheetApp.getActiveSheet(); 
    var thisCell = SpreadsheetApp.getActiveRange(); 
    var row = thisCell.getRow();
    var col = thisCell.getColumn(); 
    //Assuming every row in the 2D array has the same number of elements. 
    sheet.getRange(row, col, returnVal.length , returnVal[0].length).setValues(returnVal); 
    

    如果您希望它写入任何其他单元格,请适当更改 thisCell。 注意我自己没有测试过,所以如果有语法错误,请随时纠正它们:)

    【讨论】:

    • 感谢您的帮助,Srik,但它不起作用。实际上,这就是我(或多或少)在我的旧职能中所拥有的……让我发疯!
    • 实际上,您的代码对我的帮助更大。如果我现在从脚本管理器菜单运行脚本,它实际上正在工作。但是,当我通过键入“=testAnalytics()”从单元格中调用我的函数时,它会引发服务器错误。有什么想法吗?
    • 刚刚完成上述说明:在单元格中使用 =testAnaytics() 时,我至少调用了一个变量(但尝试了多个)。我知道单元格中的功能至少需要一个功能才能发挥作用。所以让我发疯的是,如果所有细节都在脚本中硬编码并且脚本是从经理那里调用的,那么它就可以工作。但是,当创建一个函数以从我使用其中一个变量(之前在脚本中硬编码)的单元格调用时,它不起作用......任何可以帮助解决这个问题的人?
    猜你喜欢
    • 2012-01-27
    • 1970-01-01
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多