我是编码的初学者,因此任何建议或指导都将完全有用。我正在使用一个用于特定范围/列的oneDit((的脚本。
一旦我假设使用IF语句的OneDit((触发器,将似乎插入了一个自定义的对话框提示。输入注释后,它将标记您选择的数据验证,并用时间戳将其插入单元格上。
这是我为这个问题做的示例表:https://docs.google.com/spreadsheets/d/12-b4puk5xkqllokvpxd-uz__rajmiegxhph5k9gvu4/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语句来自定义对话问题&笔记。
预先感谢您!
您必须在OneDit内部有一个if-dif条件,以检查行的数量,列。
例如,您只希望ONEDIT触发单元格(5,6(,您可以做:
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..
}
}
只需修改其他单元,列等的代码
您可以使用Onedit触发器的e
参数。在此处阅读有关事件对象的信息
将e
参数添加到功能中,然后使用if
语句检查是否在指定表的指定列上进行编辑。
在此示例中,如果在B列上进行编辑,则if
为true,Col B是Sheet1
的索引2
。
function onEdit(e){
if(e.source.getSheetName() == "Sheet1" && e.range.getColumn() == 2){