Google Scripts从单元格中填充值数组及其位置

时间:2014-08-05 00:38:12

标签: javascript arrays google-apps-script spreadsheet

我使用Google Scripts来操纵电子表格中的值。这就是我所拥有的:

var Habits = sheet.getRange("C5:D100");

var HABITS = [Habits.getCell(1, 2).getValue(),
          Habits.getCell(2, 2).getValue(),
          Habits.getCell(3, 2).getValue(),
          Habits.getCell(4, 2).getValue(),
          Habits.getCell(5, 2).getValue(),
          Habits.getCell(6, 2).getValue(),
          Habits.getCell(7, 2).getValue(),
          Habits.getCell(8, 2).getValue(),
          Habits.getCell(9, 2).getValue(),
          Habits.getCell(10, 2).getValue(),
          Habits.getCell(11, 2).getValue(),
          Habits.getCell(12, 2).getValue(),
          Habits.getCell(13, 2).getValue(),
          Habits.getCell(14, 2).getValue(),
          Habits.getCell(15, 2).getValue(),
          ];

所以你可能会看到我想要做的事情。试图将一系列单元格中的所有值作为数组。但是值的范围可能会波动,我不想对脚本进行更改。这是我尝试过的一个解决方案,但我无法开始工作(但是HABITS未定义):

var Habits = sheet.getRange("C5:D100");
var HABITS

for (var i = 0; i < Habits.getHeight; i++){

  if (Habits[i].getCell(i,1).isBlank()){
    break;
  }
  else{
    HABITS[i] = Habits.getCell(i,2).getValue();
  }
}

第二个问题是,当我得到这些值时,我需要在它们的位置写回新值,所以我需要在类似的数组中记录每个值的位置。

这是我试图改变价值的东西(这将取代&#34;经过检查的习惯&#34;并使其成为&#34;未经检查&#34;又称 - 在电子表格中替换X ),但它不适用于未定义的HABITS,因此没有长度:

for (var i = 0; i < HABITS.length; i++) {
  if (HABITS[i] == "X"){
    Favorloc.setValue(Favorloc.getValue() + 1);
    Habits[i].setValue();
  }
}

有什么建议吗? (另外,如果您需要查看我的完整脚本或电子表格以更好地了解我正在做的事情,请告诉我们)

1 个答案:

答案 0 :(得分:2)

永远值得挖掘in the documentation:)

var range = sheet.getDataRange(); // REFERENCE THE ENTIRE AREA CONTAINING DATA ON THIS SHEET
var values = range.getValues(); // RETURN THE DATA FROM THE RANGE INTO AN ARRAY

然后你可以反过来做同样的事情,确保你的阵列和你想要分配它的区域形状完全相同 - 我使用the 'offset' method of the Range class来做到这一点。