6

我有这个用于谷歌表格的谷歌脚本,当第 15 列显示“跟踪”时,它将数据行从“Sheet1”移动到“Sheet2”,当我输入“跟踪”时它工作得非常好,但我希望该列成为IF 方程类似于 IF(G:G="tracking not available at this time","","tracking")。但是代码似乎无法识别从“”到“跟踪”的公式更改。我需要更改 getvalue() 吗?或者这个问题有不同的解决方法吗?我已经使用 =query(importrange) 与电子表格一起使用触发词复制数据,但我真的希望这更像是一个存档系统,并在“sheet1”上的 row15 时在“Sheet2”的底部添加一行谢谢!这是代码:

function onEdit(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();

if(s.getName() == "Sheet1" && r.getColumn() == 14 && r.getValue() == "tracking") {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet = ss.getSheetByName("Sheet2");
if(targetSheet.getLastRow() == targetSheet.getMaxRows()) {

  targetSheet.insertRowsAfter(targetSheet.getLastRow(), 20);
}
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);
}
} 
4

2 回答 2

5

我最近遇到了一个问题,我昨天花了大约 3 个小时调试一些东西,这是罪魁祸首。

尝试使用 r.getDisplayValue() 而不是 r.getValue

我自己还是新手,如果我错了,请随时纠正我,因为如果有不同的原因,我真的很想知道!!!似乎如果单元格中的值不是输入而是通过公式(例如 =query() 或类似方法放置在那里),我认为它实际上不会看到单元格中有值。(我得到空值或公式本身)如果你使用 getDisplayValue,它“应该”得到你在单元格中实际看到的值。

于 2018-11-15T15:08:49.077 回答
0

获取公式而不是显示值的正确方法是使用getFormulas而不是getValues

于 2022-03-02T15:44:40.753 回答