这是Google Apps脚本SpreadsheetApp Range.copyTo中的错误吗?

时间:2019-06-08 01:53:35

标签: google-apps-script google-sheets google-sheets-api

我正在尝试将单元格值设置为=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);

第二个似乎清空了单元格。

不确定我是在做错什么还是错误?

1 个答案:

答案 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()的操作可能与从外部使用电子表格的情况相同。

参考

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。