【问题标题】:Google Apps Script - Replace a formula in a 2d arrayGoogle Apps 脚本 - 替换二维数组中的公式
【发布时间】:2014-11-18 19:31:57
【问题描述】:

在下面的代码中,我试图读取一个二维数组(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);

【问题讨论】:

    标签: arrays replace google-apps-script


    【解决方案1】:

    这一行:

          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,"");
    

    【讨论】:

    • 非常感谢!我知道我错过了一些简单的东西。
    猜你喜欢
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多