Google脚本 - setValue

时间:2017-11-08 05:46:04

标签: google-apps-script google-sheets

我正在尝试学习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);
    }
}

3 个答案:

答案 0 :(得分:1)

getValues()检索的值是二维数组。在您的脚本中,values[["value"]]。因此,对于您的问题中的脚本,如果要使用valuessetValue()导入单元格,则需要进行如下修改。

来自:

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脚本中。