我試圖將列資料轉換為行。但是此代碼僅轉換為一行。例如:在我的代碼中,只有在作業表 1 (IJKL) 的 Column3 Column4 Column5 Column6 的第一行中的資料被轉移到作業表 2 的 row1 row2 row3 row4 的第一行。這樣,包含在表格1(ABCDE)(FGH)的Column1和Column2正在轉移到表格2的row2 row5 row6 row7 row8 row9 row10 row10 row11 row12的第一行。 但問題是,Column3,Column4的第二行中的資料, Sheet 1(MNOP)的Column5被轉移到Sheet 2的row2,row2,row3,row4的第二行,但是Sheet 1(ABCDE)(FGH)的Column1和Column2中的資料沒有被移動到第二行sheet2 row5 row6 row7 row8 row9 row10 row10 row11 row12 但是,如果您再次運行該腳本,同樣的事情再次發生。現在我想要的只是將作業表 1 的 Column1 和 Column2 中的 (ABCDE) (FGH) 中的資料移動到第 2 行 row5 row6 row7 row8 row9 row10 row10 row11 row12 的第一行和第二行到第二行( MNOP)。
每次執行腳本時,表 1 的第 1 列和第 2 列中包含的資料應與第 3 列到第 6 列中的資料一起轉置到表 2 中。
![]()
function transpose() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');
var sh2 = ss.getSheetByName('Sheet2');
var lr = sh2.getLastRow() 1;
var gv1 = sh1.getRange('D10:G13').getValues().filter(r => r.some(e => e));
var gv2 = sh1.getRange('A2:A6').getValues();
var gv3 = sh1.getRange('B3:B5').getValues();
var result1 = [];
var result2 = [];
for(var col = 0; col < gv2[0].length; col ){
result1[col]=[];
for(var row = 0; row < gv2.length; row ){
result1[col][row] = gv2[row][col];
}
}
for(var col = 0; col < gv3[0].length; col ){
result2[col]=[];
for(var row = 0; row < gv3.length; row ){
result2[col][row] = gv3[row][col];
}
var sv1 = sh2.getRange(lr,1,gv1.length,gv1[0].length).setValues(gv1);
var sv2 = sh2.getRange(lr,5,result1.length,result1[0].length).setValues(result1);
var sv3 = sh2.getRange(lr,10,result2.length,result2[0].length).setValues(result2);
}
uj5u.com熱心網友回復:
不確定我是否理解目標。
你想要這個嗎?

這是執行此操作的代碼:
function transpose() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh1 = ss.getSheetByName('Sheet1');
var sh2 = ss.getSheetByName('Sheet2');
var lr = sh2.getLastRow() 1;
var gv1 = sh1.getRange('D10:G13').getValues().filter(r => r.some(e => e));
var gv2 = sh1.getRange('A2:A6').getValues();
var gv3 = sh1.getRange('B3:B5').getValues();
var result1 = [...gv1[0], ...gv2.flat(), ...gv3.flat()];
var result2 = [...gv1[1], ...gv2.flat(), ...gv3.flat()];
var results = [result1, result2];
sh2.getRange(lr,1,results.length, results[0].length).setValues(results);
}
uj5u.com熱心網友回復:
列到行
function coltorow() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet Name");//add sheet name
return [sh.getRange(1,col,sh.getLastRow(),1).getValues().flat()];//edit col
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/389301.html
標籤:javascript 数组 谷歌应用程序脚本 谷歌表格 转置
上一篇:如何進行全外連接?

