【问题标题】:Google Script - setValue谷歌脚本 - setValue
【发布时间】:2017-11-08 05:46:03
【问题描述】:

我正在尝试学习 Google 脚本。我想编写一个脚本,使用 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);
    }
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

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

    发件人:

    source.setValue(values);
    

    收件人:

    source.setValue(values[0][0]);
    

    注意:

    如果您想从一个单元格中检索一个值,您可以使用getValue()。在这种情况下,getValue()检索到的value可以被source.setValue(value);使用。

    参考资料:

    我不知道这是否适合你。如果我误解了你的问题,我很抱歉。

    【讨论】:

    • 非常感谢您的回复。当我尝试 source.setValue(value[0][0]) 时,只复制单元格内容的第一个字母(单元格内容是股票代码)。当我尝试对此进行测试但使用固定值 source.setValue("test") 后跟一个 source.setValue("test a") 并在两者之间暂停时,我希望看到单元格从股票代码变为“测试”到“测试一个”。但是,我看到的只是“测试 a”的变化。
    【解决方案2】:

    我能够通过在 source.clear() 命令之后添加命令 SpreadsheetApp.flush() 来解决我的问题。

    【讨论】:

      【解决方案3】:

      第二个问题的答案。

      Utilities.sleep 只在每个函数的开头运行一次。我希望这有帮助。

      不幸的是,没有像 delay() 这样的命令;或其他东西,在谷歌脚本中。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-01
        • 2020-12-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多