我正在尝试将单元格值设置为=now()
,然后仅将值复制/粘贴回去。如果我使用Sheet.appendRow()
设置单元格值,则可以,但是如果我使用Range.setValue()
或Range.setFormula()
,则不能。
此功能有效:
// add a new row
SpreadsheetApp.getActiveSheet().appendRow(["=now()"]);
// copy it and paste just the value back into the same cell
SpreadsheetApp.getActiveSheet().getRange(1, 1).copyTo(SpreadsheetApp.getActiveSheet().getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
此不起作用:
// set A1 to now
SpreadsheetApp.getActiveSheet().getRange(1, 1).setValue("=now()");
// copy it and paste just the value back into the same cell
SpreadsheetApp.getActiveSheet().getRange(1, 1).copyTo(SpreadsheetApp.getActiveSheet().getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
第二个似乎清空了单元格。
不确定我是在做错什么还是错误?
答案 0 :(得分:3)
如何将SpreadsheetApp.flush()
用于第二个脚本,如下所示?
// set A1 to now
SpreadsheetApp.getActiveSheet().getRange(1, 1).setValue("=now()");
SpreadsheetApp.flush(); // Added
// copy it and paste just the value back into the same cell
SpreadsheetApp.getActiveSheet().getRange(1, 1).copyTo(SpreadsheetApp.getActiveSheet().getRange(1, 1), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
appendRow()
的操作可能与从外部使用电子表格的情况相同。如果我误解了您的问题,而这不是您想要的结果,我深表歉意。