Google电子表格查询:如何停止作为结果显示范围?

时间:2010-11-22 18:03:52

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

晚上好,

我正在尝试使用一些编码技巧来帮助操作Google文档中的电子表格,并认为我制定的逻辑是合理的 - 但脚本只是将结果返回为“范围”。

本质上,脚本是一个嵌套循环,并且(应该)从一行数据中的六个点(从11开始)获取值,并将它们拼接成一个长垂直(第38列)。然后它应该移动到下一行。

我认为它有效,但结果只是回到“范围”而无法看到如何将值放入范围,如果这就是这个意思。

我也意识到使用单个数组在单个数组上收集数据可能更有效,但我仍然试图掌握语法。

这是我的代码:

function Transform() {
  //load spreadsheet data and initialise variables

  var sheet = SpreadsheetApp.getActiveSheet();
  var firstrow = 11;//this is a manual figure
  var d = firstrow;
  var valuerplc = sheet.getRange(firstrow, 38);
  var value =1;

  for(var c=firstrow; c<sheet.getLastRow(); c++){
    for (var e=3; e<33; e=e+6){
      var mon = sheet.getRange(c, e);
      valuerplc = sheet.getRange(d, 38);
      valuerplc.setValue(mon);

    }
    d++;

   }
  }

有人可以帮忙,或者至少指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

您遇到了常见的新手问题,无法区分范围和值。

范围表示电子表格的某个区域,其中的方法可让您访问对象的各种特征。您在电子表格中看到的内容或数据可通过.getValue()方法(针对一个小区)或.getValues()(针对多个小区)进行访问。

变化:

var mon = sheet.getRange(c, e);

要:

var mon = sheet.getRange(c, e).getValue();

...并且你将拥有该范围内的数据,如字符串,数字或日期,具体取决于那里的数据。

您选择的变量名称可能会导致混淆,值得注意。例如,请查看valuerplc。该名称暗示它是一个值,可以与.getValue().setValue()混淆。但它使用的方式是作为范围,如valuerplc.setValue(mon),所以它显然不是一个值。

function Transform() {
  //load spreadsheet data and initialise variables

  var sheet = SpreadsheetApp.getActiveSheet();
  var firstrow = 11;//this is a manual figure
  var d = firstrow;
  var valuerplc = sheet.getRange(firstrow, 38);
  var value =1;

  for(var c=firstrow; c<sheet.getLastRow(); c++){
    for (var e=3; e<33; e=e+6){
      var mon = sheet.getRange(c, e).getValue();
      valuerplc = sheet.getRange(d, 38);
      valuerplc.setValue(mon);
    }
    d++;
  }
}