当第1行(工作表的第一行)处于活动范围(Google Sheets)时,如何在getActiveRange()中排除它



如果存在,如何从getActiveRange((中排除工作表的顶行或单元格?如何集成shift((?仅在列中进行选择,以定义要在第3列中使用的区域。

function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var lastColumn = s.getActiveRange().getLastColumn();
var activeRange = s.getActiveRange().offset(0, -lastColumn+3); // column 3
if (activeRange.getRow() == 1) {
s.getRange('F1').copyTo(activeRange, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
else {
s.getRange('F1').copyTo(activeRange, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
}

例如,如果一列中的单元格(相邻单元格(被激活,并且由于过滤器的原因仅显示第1行(标题行(、第5行、第8行和第9行。然后使用copyTo((将F1(x(插入到第5行、第8行和第9行。我还不清楚如何整合建议的解决方案。以下是一些例子:

1:

function getRangeMinusHeaders(range) {
var height = range.getHeight();
if (height == 1) {
return null;
}
var width = range.getWidth();
var sheet = range.getSheet();
return sheet.getRange(1, 1, height-1, width);
}
function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var lastColumn = s.getActiveRange().getLastColumn();
var range = s.getActiveRange().offset(0, -lastColumn+3); // column 3
s.getRange('F1').copyTo(getRangeMinusHeaders(range), SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}

2:

function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var lastColumn = s.getActiveRange().getLastColumn();
const activeRange = s.getActiveRange().offset(0, -lastColumn+3); // column 3
if (activeRange.getRow() == 1) {
activeRange.getValues();
activeRange.shift();
activeRange.forEach(function(row, index) {
s.getRange('F1').copyTo(row, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
})
}
else {
s.getRange('F1').copyTo(activeRange, SpreadsheetApp.CopyPasteType.PASTE_NORMAL, false);
}
}

要获得与给定Range对应的Range对象,减去一个标题行:

function getRangeMinusHeaders(range) {
var height = range.getHeight();
if (height == 1) {
return null;
}
var width = range.getWidth();
var sheet = range.getSheet();
return sheet.getRange(1, 1, height-1, width);
}

只需在获取Values((时使用shift,即可删除第一行并保留所有其他行。

const activeRange = s.getActiveRange().getValues();
activeRange.shift(); // this removes the first row
activeRange.forEach( function(row, index){
// do something here with each row
console.log(row)
})

可以。

function x() {
var s = SpreadsheetApp.getActive().getActiveSheet();
var activeRange = s.getActiveRange()
if(activeRange.getRow() == 1){
// If first row is 1, then resize the range.
var height = activeRange.getHeight();
activeRange = activeRange.offset(1, 0, height-1);
}
Logger.log(activeRange.getA1Notation())
}

最新更新