我有一张包含很多行的google表格。为了更好地查看工作表,我希望在单元格A中有数据的每一行之前添加一个空白行。
我想我需要使用insertRowsBefore。
function Insert() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
s.insertRowsBefore(2, 1); // add 1 row before the 2nd
}
当然,这个功能只适用于第二行,我找不到为A中每一行数据做到这一点的好方法。
有人有解决方案或提示来帮助我吗?
:3
答案 0 :(得分:2)
根据您的问题和评论,我可以理解,对于[["value1"], ["value2"], ["value3"]]
,您希望插入空白行,例如[["value1"], [""], ["value2"], [""], ["value3"]]
,每个空行都是A列到最后一列。如果我的理解是正确的,那么这个修改怎么样?
insertRowsBefore()
通过for循环作为脚本插入行。但在这种情况下,当它是大量行时,处理速度会有点慢。所以我想建议使用Sheets API。通过这种方式,您可以通过一次API调用来实现它。使用此修改过的脚本时,请按照以下步骤在Advanced Google Services和API控制台中启用Sheets API。
如果您现在使用使用Sheets API的脚本打开脚本编辑器,则可以通过访问此URL https://console.cloud.google.com/apis/library/sheets.googleapis.com/
为项目启用Sheets APIfunction Insert() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var values = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues(); // Retrieve values of column A.
var sheetId = sheet.getSheetId();
var requests = [];
var count = 0;
var adjustment = 0;
values.forEach(function(e, i) { // Create requests for batchUpdate.
if (e[0]) {
count++;
requests.push({
"insertRange": {
"shiftDimension": "ROWS",
"range": {
"sheetId": sheetId,
"startRowIndex": i + count - adjustment,
"endRowIndex": i + count + 1 - adjustment
}
}
});
} else {
adjustment++;
requests.pop();
}
});
Sheets.Spreadsheets.batchUpdate({"requests": requests}, spreadsheet.getId()); // Using Sheets API.
}
if (e[0]) {
和} else {adjustment++; requests.pop();}
。如果我误解了你的问题,我很抱歉。
我更改了创建BatchUpdate请求的方法。通过创建来自最后一行的请求,修改后的脚本变得更简单。我认为通过这个,脚本可以满足你想要的输出。
function Insert() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var values = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues();
var sheetId = sheet.getSheetId();
var offset = 1; // For header
var requests = [];
for (var i = values.length - 1; i > offset + 1; i--) {
if (values[i][0]) {
requests.push({
"insertRange": {
"shiftDimension": "ROWS",
"range": {
"sheetId": sheetId,
"startRowIndex": i,
"endRowIndex": i + 1
}
}
});
}
};
Sheets.Spreadsheets.batchUpdate({"requests": requests}, spreadsheet.getId());
}
此修改后的脚本为添加的新空行提供while颜色。为此,使用了repeatCell
。
function Insert() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = spreadsheet.getActiveSheet();
var values = sheet.getRange(1, 1, sheet.getLastRow(), 1).getValues();
var sheetId = sheet.getSheetId();
var offset = 1; // For header
var requests = [];
for (var i = values.length - 1; i > offset + 1; i--) {
if (values[i][0]) {
requests.push({
"insertRange": {
"shiftDimension": "ROWS",
"range": {
"sheetId": sheetId,
"startRowIndex": i,
"endRowIndex": i + 1
}
}
});
requests.push({ // Give color to new blank row.
"repeatCell": {
"cell": {
"userEnteredFormat": {
"backgroundColor": {
"red": 1,
"green": 1,
"blue": 1,
}
}
},
"range": {
"sheetId": sheetId,
"startRowIndex": i,
"endRowIndex": i + 1
},
"fields": "*"
}
});
}
};
Sheets.Spreadsheets.batchUpdate({"requests": requests}, spreadsheet.getId());
}