我是编码的初学者,所以任何建议或指导都会非常有用。我正在编写一个脚本,它使用onEdit()来表示特定的范围/列。
一旦onEdit()触发了我假设的if语句,就会出现一个自定义对话框提示,插入一个音符。键入注释后,它将标记您选择的数据验证,并将其作为注释插入带有时间戳的单元格。
这是我为这个问题制作的样本表: https://docs.google.com/spreadsheets/d/12-b4pUK5xKqlLlOKvPxd-UZ__RaJMiEWXHPH5K9GvU4/edit?usp=sharing
请随时提问!
function onEdit() {
var ss = SpreadsheetApp.getActiveSheet().getActiveRange();
var select = ss.getDisplayValue();
if (select = 'Phone'){
var ui = SpreadsheetApp.getUi();
var name = Session.getActiveUser();
var cell = ss.getDisplayValue()
var timestamp = Utilities.formatDate(new Date(), "EST", "MMM dd");
var pnote = ss.getNote()
Logger.log(timestamp);
var result = ui.prompt(
'Would you like to add a short note?',
'',
ui.ButtonSet.OK_CANCEL);
// Process the user's response.
var button = result.getSelectedButton();
var text = result.getResponseText();
var notes = [
[pnote],
[timestamp +": "+name + ": "+cell +": "+text+'.']
];
if (button == ui.Button.OK) {
// User clicked "OK".
ss.setNote(notes);
} else if (button == ui.Button.CANCEL) {
// User clicked "Cancel".
ui.alert('You did not set a note.');
} else if (button == ui.Button.CLOSE) {
// User clicked X in the title bar.
ui.alert('You closed the dialog.');
}
} else {
Logger.log("Cell was out of range");
}
}
//Attempt 2 (no luck) would replace the first portion of script up to if statement.
// var ss = SpreadsheetApp.getActiveSheet().getActiveRange();
// var column = ss.getColumn();
// var actionColumn = [3]
//
// if (actionColumn.indexOf(column) = 3){
我的问题是,只有在特定列中选择数据验证时,才能触发此脚本。也许接下来的工作可能是有多个if语句来定制对话框问题&注释。
提前谢谢!
答案 0 :(得分:1)
你必须在onEdit中有一个if条件来检查行数,列。
例如,你只想在单元格F5(5,6)上触发onEdit,你可以这样做:
function onEdit(e){
var range = e.range;
if(range.getRow() == 5 && range.getColumn() == 6){
range.setNote('ROW: ' + range.getRow() + " COLUMN: "+ range.getColumn());
//additional code . . . Do what you want..
}
}
只需修改其他单元格,列等的代码
答案 1 :(得分:0)
您可以使用onEdit触发器的e
参数。 Read about event objects here
将e
参数添加到函数中,然后使用if
语句检查编辑是否发生在指定工作表的指定列上。
在此示例中,如果编辑发生在B列上,则if
为真,col B为2
的索引Sheet1
。
function onEdit(e){
if(e.source.getSheetName() == "Sheet1" && e.range.getColumn() == 2){