无法在Google脚本中将值添加到数组中

时间:2019-01-21 18:30:43

标签: javascript google-apps-script

我想在“ G”列或数组[6]中添加单词“ Flag”,其中对应的行在“ E”列或数组[5]中显示的值大于0.5。注意,数组[6]为空,如果满足条件,只有脚本可以在其中添加一个值。

这是我的尝试,但没有在单元格中添加单词“ Flag”。 感谢您的帮助或指导。预先感谢!

function test() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet1'); 
  var rg=sh.getDataRange()
  var vA=rg.getValues();
   var g = [];

  for(var i=1;i<vA.length;i++) {
      g[i] = [vA[i][6]]; 

      if(Number(vA[i][5])>0.5)g[i] = ['Flag']; {
        SpreadsheetApp.getActiveSheet().getRange(2,7,g.length,1).setValues(g);
}}}

错误状态:无法将数组转换为对象[]。

2 个答案:

答案 0 :(得分:0)

不确定A列到F列以及G列之外的内容。

for(var i=1;i<vA.length;i++) {
  if(Number(vA[i][5])>0.5) vA[i][6] = 'Flag';
}
SpreadsheetApp.getActiveSheet().getDataRange.setValues(vA);

或者如果您只想替换G。

var g = [];
for(var i=1;i<vA.length;i++) {
  g[i-1] = [vA[i][6]]; // Notice its an array
  if(Number(vA[i][5])>0.5) g[i-1] = ['Flag']; // Notice an array again
}
SpreadsheetApp.getActiveSheet().getRange(2,7,g.length,1).setValues(g);

答案 1 :(得分:0)

这是您代码的修订版,如果您所有的数据都是纯值而不是公式,则可以使用。

请注意,这将覆盖所有公式。

function test() {

  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Sheet1'); 
  var rg = sh.getDataRange();
  var vA = rg.getValues();

  for (var i = 1; i < vA.length; ++i) {

    if (Number(vA[i][5]) > 0.5) {
      vA[i][6] = 'Flag';
      //change value of array element
    }
  }

  rg.setValues(vA);
  //set changed values to source range
}

编辑

这将检查F列,并对G列进行更改。 它不会覆盖F列中的公式,但是会覆盖G列中的所有公式。

function test() {

  var ss = SpreadsheetApp.getActive();
  var sh = ss.getSheetByName('Sheet1');

  var lastRow = sh.getLastRow();

  var checkRg = sh.getRange('F2:F' + lastRow);
  var flagRg = sh.getRange('G2:G' + lastRow);

  var checkVa = checkRg.getValues();
  var flagVa = flagRg.getValues();

  for (var i = 0; i < checkVa.length; ++i) {

    if (Number(checkVa[i][0]) > 0.5) {
      flagVa[i][0] = 'Flag';
      //change value of array element
    }
  }

  flagRg.setValues(flagVa);
  //set changed values to source range
}