我遇到以下情况:
表1(输入):
www.url1.com?somestuff
www.url2.com?somestuff
www.url3.com?somestuff
www.url4.com?somestuff
表2(预期输出):
Col1 Col2
www.url1.com ?somestuff
www.url2.com ?somestuff
www.url3.com ?somestuff
www.url4.com ?somestuff
这是我到目前为止所做的事情:
function testwoD() {
var input = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw_data");
var output = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet11");
var row_count = input.getLastRow()
var col_count = input.getLastColumn();
raw_data = input.getRange(1, 1,row_count,col_count).getValues()
tempArr = [] // or new Array
for (var i = 0; i < row_count; i++) {
tempArr.push(raw_data[i][6].split("?")[0]);
tempArr.push(raw_data[i][6].split("?")[1]);
}
var toAddArray = [];
for (i = 0; i < tempArr.length; ++i){
toAddArray.push([tempArr[i]]);
}
Logger.log(tempArr)
output.getRange(1, 1,730,1).setValues(toAddArray);
}
这是我在Sheet2上的结果:
www.url1.com
?somestuff
www.url2.com
?somestuff
www.url3.com
?somestuff
www.url4.com
?somestuff
如何达到预期的输出?我已经阅读了很多有关转置数组的问题,但无法找到可以帮助我解决问题的答案。
谢谢!
答案 0 :(得分:3)
而不是推送和连接,你可以做到这一点
tempArr = [] // or new Array
for (var i = 0; i < row_count; i++) {
tempArr[i] = []
tempArr[i][0] = raw_data[i][6].split("?")[0];
tempArr[i][1] = raw_data[i][6].split("?")[1];
}
或者更好的是你只需推动整个分裂阵列。
for (var i = 0; i < row_count; i++) {
tempArr.push(raw_data[i][6].split("?"))
}
基本思想是获取每行数组中的两列索引。因此,当你执行setValues时,它会写入两个相应的列
最终代码:
function testwoD() {
var input = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Raw_data");
var output = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet11");
var row_count = input.getLastRow()
var col_count = input.getLastColumn();
raw_data = input.getRange(1, 1,row_count,col_count).getValues()
tempArr = [] // or new Array
for (var i = 0; i < row_count; i++) {
tempArr[i] = []
tempArr[i][0] = raw_data[i][6].split("?")[0];
tempArr[i][1] = raw_data[i][6].split("?")[1];
}
// Not sure what this code is suppose to achieve? hence removed it
/*var toAddArray = [];
for (i = 0; i < tempArr.length; ++i){
toAddArray.push([tempArr[i]]);
}*/
Logger.log(tempArr)
// You can use setValues and get numof rows and columns using array length
output.getRange(1, 1,tempArr.length,tempArr[0].length).setValues(tempArr);
}
希望有所帮助