Google应用脚本 - 从其他工作表导入工作表值

时间:2016-12-31 22:23:12

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

我试着为Google表单编写一个有条件的Google应用程序脚本。这张纸有5个标签。基本上,该表格从谷歌表格中获取数据。客户填写表格,填写我们的" Master"相关表格的标签。

在这里,我挂了电话: 该表单用于教师将学生推荐给特定的管理员。无论谁控制表单,都需要能够将特定的数据行分配给特定的管理员,每个管理员都有自己的选项卡设置。他们通过从下拉列表中选择要将行分配给哪个管理员来执行此操作。

因此,如果将第2行分配给" Miranda,"某些数据会转移到" Miranda"标签。为了论证,我们可以说该特定行的列D和E将被移动到" Miranda"的列A中。标签

这是我到目前为止所提出的:

function importStudent() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var master_sheet = ss.getSheetByName("Master");
    var miranda_sheet = ss.getSheetByName("Miranda");
    var columnT = master_sheet.getRange("T1:T").getValues();
    var columnD = master_sheet.getRange("D1:D").getValues();
    var columnE = master_sheet.getRange("E1:E").getValues();
        for(var i = 0; i <= columnT; i++) {
            if (columnT[i][0] === "Miranda") {
                var miranda_row = (miranda_sheet.getLastRow() + 1);
                var active_row = SpreadsheetApp.setActiveRange(columnT[i].getRow());
                var selectionFirst = columnD.setActiveRange(active_row:columnD);
                var selectionLast = columnE.setActiveRange(active_row:columnE);
                var fullName = selectionFirst + " " + selectionLast;
                fullName.copyValuesToRange(miranda_sheet, 1, 1, miranda_row, miranda_row);
            }
        }
}

以下代码已被破解,我正在寻找一些有关它的工作指导。马上,我知道我至少有两个问题:1变量太多,2我不确定我是否可以将变量作为setActiveRange()类的参数传递。所以,我的问题:

我该如何清理它?我应该使用什么(类?)才能使其正常运行?

PS - 在JavaScript方面,我仍然认为自己是新手。我有知识,但实际应用是我仍在学习的东西:)

1 个答案:

答案 0 :(得分:4)

不确定是否需要使用脚本来执行您正在尝试的操作。为什么不使用查询公式?

例如:

=查询(MasterData!:A:E,&#34; SELECT D,E,其中A =&#39; Miranda&#39;&#34;,0)

查询here有一些帮助。您还可以跨电子表格查询。也就是说,您可以为Miranda分配她自己的电子表格,该电子表格从您的主数据中提供。

如果您需要更多帮助,请与我分享示例电子表格数据。

相关问题