I'd like to prompt an input box when I double click on a cell in Google Sheet. The perfect example is when you protect a range in Google Sheet, whoever tries to double click on the protected range gets a prompted message box. I want to do the same with a input box instead.
The simplified version of the code I use is:
function editCell(e){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("*** SEARCH ***");
var lule = sheet.getActiveCell().getValue();
SpreadsheetApp.flush();
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Edit Contact ', '('+lule+')', ui.ButtonSet.OK_CANCEL);
// Process the user's response.
if (response.getSelectedButton() == ui.Button.OK) {
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Contacts");
ss.insertRow(1)
ss.getRange(1,1).setValue(response.getResponseText());
}
else if (response.getSelectedButton() == ui.Button.CANCEL) {
Logger.log('no');
}
else {
Logger.log('nope');
}
}
Thanks
UPDATED CODE
function setCell(){
//e.source.toast('flag1');
var sh = SpreadsheetApp.getActiveSpreadsheet();
if(sh.getSheetName() == "Contacts" == true){
Logger.log('nope');
}
else if(sh.getSheetName() == "*** SEARCH ***" == true){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("*** SEARCH ***")
var cel = sheet.getActiveCell();
var val = cel.getValue();
var row = cel.getRow();
var col = cel.getColumn();
cel.setValue("");
var lule = sheet.getRange(row,col).getValue();
var line = sheet.getRange(row,1,1,1).getValue();
sheet.getRange("A4").setValue(line)
sheet.getRange("A5").setValue(col)
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Contacts");
ss.getRange(line+4,col).setValue(val);
}
}
I FOUND A WORKAROUND
onEdit triggers this function
function setCell(){
//e.source.toast('flag1');
var sh = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("*** SEARCH ***")
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Contacts");
var cel = sheet.getActiveCell();
var val = cel.getValue();
var row = cel.getRow();
var col = cel.getColumn();
if(sh.getSheetName() == "Contacts" == true){
Logger.log('nope');
}
else if(sh.getSheetName() == "*** SEARCH ***" == true & row > 7){
cel.setValue("");
var lule = sheet.getRange(row,col).getValue();
var line = sheet.getRange(row,1,1,1).getValue();
sheet.getRange("A4").setValue(line)
sheet.getRange("A5").setValue(col)
ss.getRange(line+4,col).setValue(val);
}
}
And I have a button on a sidebar that triggers this function
function clearCell(){
var sh = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("*** SEARCH ***")
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Contacts");
var cel = sheet.getActiveCell();
var val = cel.getValue();
var row = cel.getRow();
var col = cel.getColumn();
if(sh.getSheetName() == "Contacts" == true){
Logger.log('nope');
}
else if(sh.getSheetName() == "*** SEARCH ***" == true & row > 7){
var lule = sheet.getRange(row,col).getValue();
var line = sheet.getRange(row,1,1,1).getValue();
sheet.getRange("A4").setValue(line)
sheet.getRange("A5").setValue(col)
ss.getRange(line+4,col).clear({contentsOnly: true});
}
}