将数组数据的setValues()拆分为两组列(例如B-H和AV-AX) - Google Spreadsheet

时间:2017-11-12 16:51:44

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

我有一个for循环,用于构建大小为n行×10列的数据数组。

var dupRows = crossoverDuplicates.getDataRange();        
var dupNumRows = dupRows.getNumRows();
var dupValues = dupRows.getValues();
var retreiveNotFound = [];

for (var c = 1; c < dupNumRows; c++) { 
  var dupRow = dupValues[c];
  if (dupRow[10] == "") {                                
    retreiveNotFound.push(dupValues[c]);
  }
}

然后我使用setValues()将数组粘贴到另一个工作表的底部。

if (retreiveNotFound && retreiveNotFound.length) {
  crossover.getRange(lastRowCrossoverData + 1, 2,
    retreiveNotFound.length,10 ).setValues(retreiveNotFound);
}

但是,目标表上的列现在已经移动了,我需要将数组的前7列粘贴到B-H中,将最后3列粘贴到AV-AX中。

或者,我可以创建两个数组,一个包含前7列,另一个包含最后一个3,然后单独粘贴。

不幸的是,我无法弄清楚如何做到这一点。

我猜这有一个相对简单的解决方案,但我不是在寻找正确的关键词。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

将Google电子表格列移至两个不同的位置。拆分Google电子表格列并将它们放入不同的列或两个不同的列中。此代码从一个位置获取数据,然后创建两个单独的数组,并将数据写入两个不连续的范围。

function myFunction() {

  var dupRows = crossoverDuplicates.getDataRange();        
  var dupNumRows = dupRows.getNumRows();
  var dupValues = dupRows.getValues();

  var B_H_Array = [];
  var AV_AX_Array = [];

  var AV_AX_TempArray, B_X_TempArray, c, dupRow, thisRowsData;//Define variables
    //without assigning a value

  for (c = 1; c < dupNumRows; c++) { 
    dupRow = dupValues[c];

    if (dupRow[10] == "") {
      thisRowsData = dupValues[c];

      B_X_TempArray = thisRowsData.slice(0,7);//Slice out the first elements
      AV_AX_TempArray = thisRowsData.slice(7,10);//Slice out last elements

      B_H_Array.push(B_X_TempArray);
      AV_AX_Array.push(AV_AX_TempArray);
    }
  }

  if (B_H_Array.length) {
    crossover.getRange(lastRowCrossoverData + 1, 2,B_H_Array.length, B_H_Array[0].length )
      .setValues(B_H_Array);
  }

  if (AV_AX_Array.length) {
    crossover
      .getRange(lastRowCrossoverData + 1, 48,AV_AX_Array.length, AV_AX_Array[0].length )
      .setValues(AV_AX_Array);
  }
}