修复Google表格脚本,因此它在运行时不会删除单元格公式

时间:2017-12-19 15:44:15

标签: google-apps-script google-sheets

我在Google表格上运行了这个脚本:

function recordMax() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("K16:L16");
  var values = range.getValues()[0];
  range.setValues([[values[0], Math.max(values[0], values[1])]]);
}

但是,我在这里有效http://screencast.com/t/BOXzC0UZxFZ(短片1分钟视频显示问题)。问题的摘要是,当脚本在力K16中运行时,只显示公式的当前值并去掉我在K16中的= sum公式。

您认为我需要做什么,以便在脚本运行时,它不会自动删除K16公式,以便K16继续更新为新值?

:)

1 个答案:

答案 0 :(得分:0)

以下修改怎么样?

修改点:

  • 为了检索单元格中的公式,它使用getFormulas()
  • 插入检索到的公式。

修改后的脚本:

在大多数情况下,可以使用以下修改过的脚本。我认为在您的情况下,可以使用以下修改过的脚本。

function recordMax() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("K16:L16");
  var formula = range.getFormulas()[0]; // Added
  var values = range.getValues()[0];
  range.setValues([[formula[0], Math.max(values[0], values[1])]]); // Modified
}

有时需要使用setFormula()插入公式,如下所示。

function recordMax() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("K16:L16");
  var formula = range.getFormulas()[0]; // Added
  var values = range.getValues()[0];
  sheet.getRange("K16").setFormula(formula[0]); // Added
  sheet.getRange("L16").setValue(Math.max(values[0], values[1])); // Added
}

参考:

如果我误解了你的问题,请告诉我。我想修改。