如何修改Google Sheets脚本为转置数据添加4个空白间隔
Google Apps Script 实现转置数据并添加空白行间隔
我编写了一段Google Apps Script,可基于Picks工作表J6单元格的数值,从Weekly Selections工作表提取一行数据,转置为列后显示在Picks工作表指定区域。当前脚本输出连续行数据,希望在每个数据值间添加4个空白单元格。现有代码如下:
sh = SpreadsheetApp.getActiveSpreadsheet(); shForm = sh.getSheetByName("Picks"); shDb = sh.getSheetByName("Weekly Selections"); rng = shForm.getRange("B11:B46"); rng_val = rng.getValues() function search(){ var rowNum = shForm.getRange("J6").getValue(); if(rowNum === 0){ SpreadsheetApp.getUi().alert("User not found!") } else { // 获取用户数据行 var data = shDb.getRange(rowNum,2,1,8).getValues() // 转置数据 trans = []; for(var column = 0; column < data[0].length; column++){ trans[column] = []; for(var row = 0; row < data.length; row++){ trans[column][row] = data[row][column]; } } // 输出转置后的数据 shForm.getRange(11,9,8,1).setValues(trans); } }
修改方案
要实现每个数据值间添加4个空白单元格,只需在转置后的数组中插入空白元素,再写入工作表:
sh = SpreadsheetApp.getActiveSpreadsheet(); shForm = sh.getSheetByName("Picks"); shDb = sh.getSheetByName("Weekly Selections"); rng = shForm.getRange("B11:B46"); rng_val = rng.getValues() function search(){ var rowNum = shForm.getRange("J6").getValue(); if(rowNum === 0){ SpreadsheetApp.getUi().alert("User not found!") } else { // 获取用户数据行 var data = shDb.getRange(rowNum,2,1,8).getValues() // 转置数据 trans = []; for(var column = 0; column < data[0].length; column++){ trans[column] = []; for(var row = 0; row < data.length; row++){ trans[column][row] = data[row][column]; } } // 构建带4个空白间隔的结果数组 const result = []; trans.forEach((item, index) => { result.push(item); // 最后一个数据后不添加空白 if (index !== trans.length - 1) { // 添加4个空白行 for (let i = 0; i < 4; i++) { result.push(['']); } } }); // 输出带间隔的数据到指定区域 shForm.getRange(11, 9, result.length, 1).setValues(result); } }
关键修改点
- 新增
result数组,遍历转置后的trans数组:- 先将每个数据项加入结果数组
- 除最后一个数据外,每个数据后添加4个包含空字符串的数组元素(对应工作表的空白单元格)
- 修改
getRange的行数参数为result.length,确保所有带间隔的数据都能写入工作表
内容的提问来源于stack exchange,提问作者Hocky295
相关产品推荐
相关产品推荐

