【问题标题】:Google Script .getvalue() Not Working With Cells With a Formula In ItGoogle Script .getvalue() 不适用于带有公式的单元格
【发布时间】:2018-11-14 16:41:41
【问题描述】:

我有这个用于 google 表格的 google 脚本,当第 15 列显示“tracking”时,它将数据行从“Sheet1”移动到“Sheet2”,当我输入“tracking”时它工作得非常好,但我想要那个列成为一个 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);
}
} 

【问题讨论】:

  • 这对于 Google 表格来说是个难题。 getValue() 只获取单元格中的值,它知道公式不是值。同样 getFormulas() 将公式作为字符串获取,但如果单元格仅包含一个值,则该字符串为空白。现在的难题是您不能用公式数组覆盖值数组并使用 setValues()。您几乎需要遍历公式数组并将公式(如果存在于该单元格中)作为字符串放入值数组中,然后使用 setValues()。
  • @TheWizEd 是的,这正是我遇到的。感谢您的回复。
  • @ThWizEd 这不是 op 要求的。

标签: if-statement google-apps-script google-sheets getvalue


【解决方案1】:

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

尝试使用 r.getDisplayValue() 代替 r.getValue

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

【讨论】:

  • 感谢您的反馈!我尝试使用 getDisplayValue(),但这似乎不起作用。它仍然没有注册它以将其复制到
  • 您可以尝试其他方法。单元格中的多余空格,无论是在开头还是结尾,也会在读取值时造成麻烦。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 2018-05-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多