Google电子表格 - 将多列转换为一列

时间:2016-08-02 16:49:41

标签: for-loop google-apps-script google-sheets

我想循环浏览Google Spreadsheet中的一组行,如下所示:

XXX 123 234 234

YYY 789 098 765

ZZZ 76 123 345

最终结果需要:

XXX:123

XXX:234

XXX:234

YYY:789

YYY:098

我目前的代码:

function loopshoplocations(){ 
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var data = sheet.getRange('A4:A8').getValues(); 
  var i=0; 
  for(i = 0; i < 4; i++){
    return ('Shop Location: ' + data[i][0]);
  }}

2 个答案:

答案 0 :(得分:1)

或者使用公式

=ArrayFormula( transpose(split(query(rept(left(A2:A, 3)&" ", 3),,50000), " "))&": "
&transpose(split(query(regexreplace(A2:A, "^(.+?)\s",""),,50000), " ")))

另见此截图:

SCREENSHOT

答案 1 :(得分:0)

此代码假定第一行有标题行。数据附加在工作表的末尾。如果您想要不同的东西,则需要调整代码。

function loopshoplocations() {
  var data,L,outerArray,innerArray,numberOfRows,sheet,startRow;

  startRow = 2;

  sheet = SpreadsheetApp.getActiveSheet();
  numberOfRows = sheet.getLastRow();
  data = sheet.getRange(startRow,1,numberOfRows-startRow+1,4).getValues(); 
  L = data.length;

  //Logger.log(data);

  outerArray = [];

  var i,j;
  for(i = 0; i < L; i++){

    for (j=1; j<4 ; j+=1) {//Begin count at one, not zero
      innerArray = [];//Reset
      innerArray.push(data[i][0]);
      innerArray.push(data[i][j]);
      //Logger.log(innerArray)
      outerArray.push(innerArray);
    };
  };

  sheet.getRange(numberOfRows+1,1,outerArray.length,outerArray[0].length).setValues(outerArray);
};