清除单元格的内容,然后设置新值

Fab*_*llo 2 google-sheets setvalue google-apps-script

我正在尝试清除单元格的内容,然后设置一个新值。我知道你会问“为什么不设置一个新值而不是先清除单元格?”,但我真的需要那样。这是我所拥有的

var ss = SpreadsheetApp.getActiveSheet();
var new = ss.getRange("G1");
new.clearContent();
new.setValue('|');  
Run Code Online (Sandbox Code Playgroud)

问题是清理没有发生,我尝试了很多东西,但没有一个起作用:S。有人知道我做错了什么吗?提前致谢!

Die*_*ego 5

您不能使用,new因为它是reserved。使用其他类似的东西cell。此外,使用getActiveSheet()是危险的,因为它要求您实际选择该工作表。因此,如果您想修改“Sheet1”中的某些内容,但您的光标位于“Sheet2”中的单元格上,那么您将得到意想不到的结果。相反,明确指定您要使用的工作表。

function test() {
  var ss = SpreadsheetApp.getActive().getSheetByName("SHEET NAME");
  var cell = ss.getRange("G1");
  cell.clearContent();
  cell.setValue('|'); 
}
Run Code Online (Sandbox Code Playgroud)

为了证明这确实先清除了单元格,您可以SpreadsheetApp.flush()结合使用Utilities.sleep(). 您需要使用,flush()因为“有时将电子表格操作捆绑在一起以提高性能”。调用flush()将确保在继续脚本之前执行所有这些操作。

function test() {
  var ss = SpreadsheetApp.getActive().getSheetByName("SHEET NAME");
  var cell = ss.getRange("G1");
  cell.clearContent();
  SpreadsheetApp.flush();
  Utilities.sleep(10000); // You have 10 seconds to check that the cell has cleared
  cell.setValue('|'); 
}
Run Code Online (Sandbox Code Playgroud)