onSelectionChange已停止工作,但函数可在手动触发器上工作



我通过抓取单元格及其行并在其('A'+行(对应对象上设置背景来突出显示工作表中的标题。这在onSelectionChange((中运行良好。

在工作表上移动单元格并编辑GAS中的引用,但onSelectionChange停止工作以突出显示相应的单元格。我甚至用手动触发器do_Selection((尝试了新代码,每次我选择一个新单元格并按下按钮时,它都能正常工作。

然而,简单地将工作代码移动到onSelectionChange((函数中并没有任何作用。

我甚至试过简单一点。只是看看我是否可以用onSelectionChange((得到一个关于我选择的单元格的注释输出,现在它甚至没有启动。

我不知道我是如何获得荧光笔功能的。同样,使用手动按钮可以很好地工作,但使用新的单元格选择不会发生这种情况。

function onSelectionChange(e){
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();

var cell = sheet.getCurrentCell();
var cellA1 = cell.getA1Notation();
var r_Col = cell.getColumn();
var r_Row = cell.getRow();
sheet.getRange('A17').setNote(cellA1);
// do_Selection();
}
function selectCheck() { // Manual selection trigger
do_Selection();
}
function do_Selection() { // Selection code that was onSelectionChange(e)
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var sheet_Name = sheet.getSheetName();
var cell = sheet.getCurrentCell();
var cellA1 = cell.getA1Notation();
var r_Col = cell.getColumn();
var r_Row = cell.getRow();
var HENKEL_RED = '#EC1B22';
var e_Omit = [1,2,3,17,18,19,23];
var w_Omit = [1,2,3,17,18,19,23];
var permit = true;

reset_Headers();
sheet.getRange('A17').setNote(cellA1);
if (cellA1 === 'G19') {
sheet.getRange('G18').setBackground(HENKEL_RED);
} else if (cellA1 === 'H19') {
sheet.getRange('H18').setBackground(HENKEL_RED);
} else if (cellA1 === 'I19') {
sheet.getRange('I18').setBackground(HENKEL_RED);
} else if (cellA1 === 'J19') {
sheet.getRange('J18').setBackground(HENKEL_RED);
} else if (sheet_Name === 'East Data') {
for (i = 0; i < e_Omit.length; i++) {
if (r_Row === e_Omit[i]) {
permit = false;
}
}
if (1 < r_Col && r_Col < 6  && permit === true) {
sheet.getRange('A' + r_Row).setFontColor('#FFFFFF').setBackground(HENKEL_RED);
}
} else if (sheet_Name === 'West Data') {
for (i = 0; i < w_Omit.length; i++) {
if (r_Row === w_Omit[i]) {
permit = false;
}
}
if (1 < r_Col && r_Col < 5  && permit === true) {
sheet.getRange('A' + r_Row).setFontColor('#FFFFFF').setBackground(HENKEL_RED);
}
}
}

我仔细研究了e,并能够更好地提取它,而不是通过.getCurrentCell((的方式提取,尽管这在一开始是有效的。

function onSelectionChange(e){
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
var sheet_Name = sheet.getSheetName();
var range = e.range;
if (range.getNumRows() === 1 &&
range.getNumColumns() === 1 ) {
var cell = range.getCell(1, 1);
var cellA1 = cell.getA1Notation();        
}

// continue into do_Selection()
var r_Col = cell.getColumn();
var r_Row = cell.getRow();
var HENKEL_RED = '#EC1B22'; .......

最新更新