【问题标题】:Google Spreadsheet - Convert multiple columns to one columnGoogle 电子表格 - 将多列转换为一列
【发布时间】:2016-08-02 16:49:40
【问题描述】:
我想遍历 Google 电子表格中的一组行,如下所示:
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]);
}}
【问题讨论】:
标签:
for-loop
google-apps-script
google-sheets
【解决方案1】:
或者用公式
=ArrayFormula( transpose(split(query(rept(left(A2:A, 3)&" ", 3),,50000), " "))&": "
&transpose(split(query(regexreplace(A2:A, "^(.+?)\s",""),,50000), " ")))
另见此截图:
【解决方案2】:
此代码假定第一行有一个标题行。数据将附加在工作表的末尾。如果您想要不同的东西,则需要调整代码。
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);
};