【问题标题】:Google Apps Scipt - Using OnEdit to transpose data from inputGoogle Apps 脚本 - 使用 OnEdit 从输入转置数据
【发布时间】:2017-08-20 14:44:17
【问题描述】:

我是 GAS 新手,正在努力使用 OnEdit 功能将数据从一张表复制并粘贴到另一张表。我有一个输入表和一个主表,它们使用 OnEdit 从单元格 D36 读取“提交”并将数据从 "Input" E3:E36 传输到 "MasterList" A5:AG5 作为转置。

一旦在下拉列表中选择“提交”,我的代码(见下文)就会从输入表中删除所有数据。 “MasterList”表上没有显示任何内容。所选范围是否在此代码中被删除,如果是,我如何确保将其粘贴到最后一行数据末尾的“MasterList”表中(此处显示为第 5 行)?

还有一种方法可以保留输入范围中的公式以供将来输入(我根据在 E5 中输入的数据在 E8:E10 中有一个 vlookup)?

function onEdit(e) {

if (e.source.getActiveSheet().getName() !== "Input" || e.range.rowStart != 36 || e.range.columnStart != 4 | e.value !== "Submit") return
e.source.getActiveSheet()
.getRange("E3:E36")
    .setValue(e.source.getSheetByName("MasterList")
        .getRange("A5:AG5")
        .getValue())

}

谢谢!

【问题讨论】:

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


    【解决方案1】:

    setValue 和getValue 命令用于一个单元格范围或至多一个大范围的左上角单元格。如果您想从多单元格范围获取值,请使用 getValues,它返回一个二维值数组;如果您想为多单元格范围设置值,请使用 setValues,这里是 resource link,它描述了函数以及一些示例。

    此外,当您创建新代码时,如果您将命令链分解以便您可以使用调试器查看中间答案,那么调试起来会更容易。

    【讨论】:

    • 感谢您的回复,库珀。当我在这段代码中更新 getValues 和 setValues 时,输入或主表上都没有发生任何事情。这是因为所选范围无法解析为二维数组吗?
    • 这对我来说也是一个难题。事实上,我对单行单列和多行多列进行了一些测试,只是为了更多地了解这些问题以及如何通过使用调试器来解决这些问题可视化和解决这些问题。我写了一些关于它并制作了一个简短的视频,你可以找到here我认为它可能会帮助你了解如何处理这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    相关资源
    最近更新 更多