我正在尝试学习Google Script。我想编写一个脚本,使用For循环来保存每个单元格的值,清除单元格,然后将保存的值粘贴回其中。数据在C6-C17单元格中。到目前为止,我能够让我的For循环工作逐个清除每个单元格,中间暂停1秒,但我无法弄清楚如何使用setValue将值复制回单元格。如果我将最后一行更改为source.setValue(“test”),那么我的脚本将工作,清除每个单元格,然后将其替换为“test”。
这是我的代码:
function forceRefresh() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Fidelity Daily");
for (var i =6 ; i<=17;i++)
{
var source = sheet.getRange(i,3);
var values = source.getValues();
source.clear();
Utilities.sleep(1000);
source.setValue(values);
}
}
答案 0 :(得分:1)
getValues()
检索的值是二维数组。在您的脚本中,values
为[["value"]]
。因此,对于您的问题中的脚本,如果要使用values
将setValue()
导入单元格,则需要进行如下修改。
source.setValue(values);
source.setValue(values[0][0]);
如果要从一个单元格中检索一个值,可以使用getValue()
。在这种情况下,value
可以使用由getValue()
检索的source.setValue(value);
。
我不知道这是否适合你。如果我误解了你的问题,我很抱歉。
答案 1 :(得分:0)
我能够通过在source.clear()命令之后添加命令SpreadsheetApp.flush()来解决我的问题。
答案 2 :(得分:0)
第二个问题的答案。
Utilities.sleep仅在每个函数的开头运行一次。我希望这有帮助。
不幸的是,没有像delay()这样的命令;之类的东西,在Google脚本中。