Google Apps脚本 - 如果不是空白,则复制相邻的单元格;无法复制整个专栏

时间:2017-11-21 19:57:03

标签: google-apps-script

首先,让我为这段代码无组织的混乱道歉。我总共花了n00b,主要是切片和切割我在网上找到的其他人的代码,以实现我想要做的事情。

话虽如此,我的总体目标是操纵原始数据。以下是步骤:

  1. 在电子表格中粘贴未组织的原始数据,然后运行以下脚本;
  2. 如果列B中的单元格不为空,则将单元格内容从B列和C列复制到A列中的第一个空行。 ===>这部分代码完美无缺。
  3. 如果C列中的单元格不为空,则将单元格内容复制到B列中的相邻单元格。 ===>这是我遇到问题的代码的一部分。它会复制第一个实例,而不会复制其余实例。
  4. 以下是现在的代码:

    function dataParse() {
      var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw Data");
      var lastRow = ss.getLastRow();
      var lastCol = ss.getLastColumn();
      var targetValues = [];
      var targetValue = [];
      var range = ss.getRange(1, 1, lastRow, lastCol);
      var range1 = SpreadsheetApp.getActiveRange();
      var col = range1.getColumn();
      var row = range1.getRow();
      var data = range.getValues();
      var data1 = range1.getValues();
      var activeRow = 0;
    
    
    
      for (row in data) {
        if (data[row][1] !=''){
          var tempvalue = [data[row][1], data[row][2]];
          targetValues.push(tempvalue);
        }
      }
      ss.getRange(lastRow + 1, 1 , targetValues.length, 2).setValues(targetValues);
      
      for (row in data1) {
        if (data1[row][2] !=''){
          var tempervalue = [data[row][2]];
          targetValue.push(tempervalue);
        }
      }
      ss.getRange(row, col+1, targetValue.length, 1).setValues(targetValue);
    }

    我已经尝试过猜测/检查改变很多事情,看看我是否会得到我正在寻找的结果,但无济于事;为什么我在这里。

    我确定这是一个非常小的东西,但我不够精明,甚至不知道问题是什么。

    任何帮助表示赞赏!如果您需要样品表来了解我正在尝试解释的内容,请告诉我。提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

试试这个:

function copyMyData() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName("Sheet1");
  var range=sh.getDataRange();
  var data=range.getValues();
  for(var i=0;i<data.length;i++)
  {
    if(data[i][1]){
      data[firstEmptyCell(data,0)][0]=data[i][1] + ' ' + data[i][2];
    }
    if(data[i][2]){
      data[i][1]=data[i][2];
    }
  }
  range.setValues(data);
}

function firstEmptyCell(dataA,index){
  var vA=dataA;
  for(var i=0;i<dataA.length;i++){
    if(!vA[i][index]){
      return i;
    }
  }
}

之前的表:

enter image description here

表之后:

enter image description here