谷歌脚本循环复制到循环行

时间:2019-11-21 05:41:48

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

对不起,这可能是一个非常新手的问题,我正在自学,无法弄清楚如何用谷歌找到答案。

我在Google工作表中有一个循环,该循环遍历每个字段并更新一些从网站中提取信息的单元格,然后我需要将这些信息复制到循环的每一行中。它似乎正在循环中正常工作,但是在尝试复制时无法将其放入正确的行中。

我确信这很简单,希望有人能指出我正确的方向。我很确定这与第34行的代码有关,但无法弄清楚如何纠正它。

Angular 7

2 个答案:

答案 0 :(得分:0)

您能尝试一下吗?

var currentRow = ss.getActiveRange().getRow();
var currentCol = ss.getActiveRange().getColumn();
.
.
.
ss.getRange('State!AB5').copyTo(ss.getRange(currentRow+1, currentCol), 
SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

答案 1 :(得分:0)

原始代码的修改:

  1. 已在第24行中纠正了错误。在您的原始帖子中,您正在使用=assignment operator)来比较变量。但是,您要使用==equality operator)。

  2. 添加了缺少的分号。尽管不是必需的,但它可以带来良好且一致的样式,并可以防止某些错误。

  3. 在循环中移动了i声明。使代码更清洁,更安全。

  4. 已修改的for循环主体,以便它使用范围和setValue()getValue()方法来复制数据。

function myLoop() {
    var ui = SpreadsheetApp.getUi();
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var Lsheet = ss.setActiveSheet(ss.getSheetByName('Loop'), true);
    var rangeData = Lsheet.getDataRange();
    var lastColumn = rangeData.getLastColumn();
    var lastRow = rangeData.getLastRow();
    var dataRange = Lsheet.getRange(2,1, lastRow-1, lastColumn-1);
    var data = dataRange.getValues();
    var len = data.length;

    var statsSheet = ss.getSheetByName('Stats');
    var loopSheet = ss.getSheetByName('Loop');

    for (var i = 0; i < len; i++) {
        var row = data[i];
        var player = row[4];
        var prop = row[6];
        var number = row[7];
        var overodds = row[8];
        var underodds = row[9];
        var overreq = row[10];
        var underreq = row[11];

        if (prop == "Points") {
          statsSheet.getRange('B1').setValue(player);

          loopSheet.getRange(overreq).setValues(
            statsSheet.getRange('AB5').getValues()
          );

          loopSheet.getRange(underreq).setValues(
            statsSheet.getRange('AB6').getValues()
          );

        }
    }
}