【问题标题】:Google apps script read and match cell values in different sheets谷歌应用脚​​本读取和匹配不同工作表中的单元格值
【发布时间】:2019-02-15 15:56:23
【问题描述】:

我第一次编写一个谷歌脚本来处理来自谷歌电子表格的数据。谷歌表存在 2 张表,它们都基于不同的谷歌表单。

目标是自动将想要辅导他人的人与一个或多个科目匹配。例如(见图片)Johnny 应该匹配到 Lauren,而 Micheal 应该匹配到 John。

我编写此代码是为了检查可以辅导他们的 Micheal 和 Johnny。我想做的是检查主题物理,如果 Micheal 想接受这个主题的辅导,然后谁可以做到这一点。然后约翰尼也是如此。并用另一个主题(英语)重复它。

在这个例子中,我从只检查主题开始;物理。这只是为了查看物理是否标记为“是”或“否”。

[代码在末尾]

当我查看我的日志时,预计会看到: 不 是的 不 是的 是的 没有

但我看到的是: 不 是的 没有

希望获得辅导的人的表格

导师表

function myFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    /* sheet with people who want to tutor other people */
    var lr = ss.getLastRow(); // how many rows
    var kk =
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Hebber");
    /* sheet with people who want to be tutored */
    var klr = kk.getLastRow(); // how many rows

    for (var i = 2; i <= klr; i++) {

        var hemail = kk.getRange(i, 2).getValue();
        var hname = kk.getRange(i, 3).getValue();
        var hphysics = kk.getRange(i, 4).getValue();
        var henglish = kk.getRange(i, 5).getValue();

        Logger.log(hphysics);

        for (var i = 2; i <= lr; i++) {

            var gemail = ss.getRange(i, 2).getValue();
            var gname = ss.getRange(i, 3).getValue();
            var gphysics = ss.getRange(i, 4).getValue();
            var genglish = ss.getRange(i, 5).getValue();

            Logger.log(gphysics);
        }
    }
}

【问题讨论】:

  • 谢谢,你是对的!

标签: google-apps-script


【解决方案1】:

尝试使用 j 而不是 i 作为变量的第二个循环。由于您使用的是 i,当脚本返回到第一个 for 循环时,它已经向 i 添加了数字,这导致它比您想要的更早地离开循环。如果您不希望第二个 for 循环影响第一个,则需要使用不同的变量。

【讨论】:

    【解决方案2】:

    问题似乎是你的计数器变量。

    查看我的示例及其输出:

    var klr = 3;
    var lr = 3;
    
    for (var i = 0; i <= klr; i++) {
      console.log("f1." + i);
      for (var i = 0; i <= lr; i++) {
        console.log("f2." + i);
      }
    }
    f1.0
    f2.0
    f2.1
    f2.2
    f2.3
    

    因此,要回答您的问题,您需要在第二个 for 循环中使用备用变量:

    for (var i = 2; i

        var hemail = kk.getRange(i, 2).getValue();
        var hname = kk.getRange(i, 3).getValue();
        var hphysics = kk.getRange(i, 4).getValue();
        var henglish = kk.getRange(i, 5).getValue();
    
        Logger.log(hphysics);
    
        for (var j = 2; i <= lr; j++) {
    
            var gemail = ss.getRange(j, 2).getValue();
            var gname = ss.getRange(j, 3).getValue();
            var gphysics = ss.getRange(j, 4).getValue();
            var genglish = ss.getRange(j, 5).getValue();
    
            Logger.log(gphysics);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多