Google Apps脚本 - 替换二维数组中的公式

时间:2014-11-18 19:31:58

标签: arrays replace google-apps-script

在下面的代码中,我试图读取2d数组(157行,2列),这些都是公式。然后我需要从每个单元格中删除公式的一部分,然后将其写回到相同范围内的工作表(在此步骤之前,我将删除公式的这部分引用的工作表)。当我运行调试器时,一切运行正常,但我的值不会被替换。有什么想法吗?

ss.setActiveSheet(ss.getSheetByName('Employee List'));
var as = SpreadsheetApp.getActiveSheet();
var empid = as.getLastRow();

var hrsRange = as.getRange(1, 3, empid, 2).getFormulas();
var i = 1;
while(i < empid)
{

  var emp = as.getRange(i, 2).getA1Notation();
  if (cpr == 20)
  {
    while(i < hrsRange.length)
    {
      var regHrs = "+sumif('" + array[x] + "'!O:O,$" + emp + ",'" + array[x] + "'!P:P)";
      var otHrs = "+sumif('" + array[x] + "'!O:O,$" + emp + ",'" + array[x] + "'!Q:Q)";
      hrsRange[i-1][0].toString().replace(regHrs,"");
      hrsRange[i-1][1].toString().replace(otHrs,"");

      i++;
    }
  } else {
    while(i < hrsRange.length)
    {
      var regHrs = "+sumif('" + array[x] + "'!O:O,$" + emp + ",'" + array[x] + "'!Q:Q)";
      var otHrs = "+sumif('" + array[x] + "'!O:O,$" + emp + ",'" + array[x] + "'!R:R)";
      hrsRange[i-1][0].toString().replace(regHrs,"");
      hrsRange[i-1][1].toString().replace(otHrs,"");

      i++;
    }
  }

  i++;
}

as.getRange(1, 3, empid, 2).setFormulas(hrsRange);

1 个答案:

答案 0 :(得分:0)

这一行:

      hrsRange[i-1][0].toString().replace(regHrs,"");

将返回一个字符串,而不是实际修改hrsRange[i-1][0]

您需要将结果字符串分配给hrsRange[i-1][0]

 hrsRange[i-1][0]=hrsRange[i-1][0].toString().replace(regHrs,"");