我是Google Script的新手,所以请耐心等待。我正在尝试编写一个脚本,该脚本将从多个行和列中获取数据,然后将其重写为具有间距的单个列。
所以行
1a 1b 1c
2a 2b 2c
3a 3b 3c
将成为......
1A
图1b
1C
2A
2B
2C
等...
到目前为止我还没有任何东西。我不明白如何在阵列中访问每个不同的数据。任何帮助/指导将不胜感激。
function copyRow(){
var sheet = SpreadsheetApp.getActive();
var numRows = sheet.getDataRange().getNumRows();
var rowIdx = sheet.getActiveRange().getRowIndex();
sheet.getRange(rowIdx, 1, 1, sheet.getLastRow()).getValues();
for(var i = 0; i < numRows; i++){
}
}
答案 0 :(得分:0)
试试这段代码。 getValues()
方法获得二维数组。每个内部数组都是一个新行。每个内部数组的每个元素都是新列中的单元格。 2D阵列可以折叠成规则阵列,没有外部阵列。但是要编写值,需要一个2D数组,因此下面的代码会创建一个新的2D数组。每个内部数组只有一个值。
function copyRow() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var numRows = sheet.getLastRow();
var rowIdx = sheet.getActiveRange().getRowIndex();
Logger.log('rowIdx: ' + rowIdx);
//getRange(start row, start column, number of rows, number of columns)
var theValues = sheet.getRange(rowIdx,1,sheet.getLastRow()).getValues();
Logger.log('theValues.length: ' + theValues.length);
theValues = theValues.toString().split(",");//convert 2D array to 1D
Logger.log('theValues.length: ' + theValues.length);
var outerArray = [];
for(var i=0; i<theValues.length; i++){
Logger.log('theValues[i]: ' + theValues[i]);
outerArray.push(theValues[i]);
};
Logger.log('outerArray.length: ' + outerArray.length);
sheet.getRange(1,1,outerArray.length,outerArray[0].length).setValues(outerArray);
};
尝试一下,看它是否有效,让我知道。
答案 1 :(得分:0)
你不需要脚本。把这个公式放在一个单元格中:
=transpose(split(join(" ",A1:A3)," "))
您可以加入多个行和列。我在A和A列中提供的数据上对此进行了测试。 B行1到3.工作正常。
=transpose(split(join(" ",A1:A3,B1:B3)," "))
答案 2 :(得分:0)
这似乎有效。手动迭代数组并使用for循环设置它。
function copyRow() {
var ss = SpreadsheetApp.getActive();
var sheet = ss.getActiveSheet();
var numRows = sheet.getLastRow();
var rowIdx = sheet.getActiveRange().getRowIndex();
var colIdx = sheet.getActiveRange().getColumnIndex();
var theValues = sheet.getRange(rowIdx,colIdx,sheet.getLastRow(),3).getValues();
theValues = theValues.toString().split(",");//convert 2D array to 1D
var outerArray = [];
for(var i=0; i<theValues.length; i++){
outerArray.push(theValues[i]);
};
Logger.log(outerArray);
// sheet.getRange(1,1,outerArray.length,30).setValues(outerArray);
for(var i = 0; i < outerArray.length; i++){
sheet.getRange(30 + i, 1).setValue(outerArray[i]);
}
};