使用 google 脚本双击 google sheet 中的单元格提示输入
Prompt input on double click on cell in google sheet using google script
我想在 Google Sheet 中双击单元格时提示输入框。
一个完美的例子是当你保护 Google Sheet 中的一个范围时,任何试图双击受保护范围的人都会得到一个提示消息框。我想用输入框做同样的事情。
我使用的代码的简化版本是:
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');
}
}
谢谢
更新代码
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);
}
}
这适用于用户编辑的任何单元格:
双击单元格没有生成用户触发器。
Sheet Class 没有名为 insertRow 的方法。
ui.prompt 需要可安装的触发器。
function editCell(e){
//e.source.toast('flag1');
var sh=e.range.getSheet();
if(sh.getName()!="*** SEARCH ***")return;
var ui=SpreadsheetApp.getUi();
var response=ui.prompt('Edit Contact','('+ e.value +')',ui.ButtonSet.OK_CANCEL);
if(response.getSelectedButton()==ui.Button.OK) {
//e.source.toast('flag2');
var ss=e.source.getSheetByName("Contacts");
ss.insertRowBefore(1);//added this
ss.getRange(1,1).setValue(response.getResponseText());
}
else if (response.getSelectedButton()==ui.Button.CANCEL) {
//e.source.toast('flag3');
Logger.log('no');
}
else {
//e.source.toast('flag4');
Logger.log('nope');
}
}
我找到了解决方法
onEdit 触发此函数
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);
}
}
我在边栏上有一个按钮可以触发此功能
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});
}
}
我想在 Google Sheet 中双击单元格时提示输入框。 一个完美的例子是当你保护 Google Sheet 中的一个范围时,任何试图双击受保护范围的人都会得到一个提示消息框。我想用输入框做同样的事情。
我使用的代码的简化版本是:
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');
}
}
谢谢
更新代码
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);
}
}
这适用于用户编辑的任何单元格:
双击单元格没有生成用户触发器。
Sheet Class 没有名为 insertRow 的方法。
ui.prompt 需要可安装的触发器。
function editCell(e){
//e.source.toast('flag1');
var sh=e.range.getSheet();
if(sh.getName()!="*** SEARCH ***")return;
var ui=SpreadsheetApp.getUi();
var response=ui.prompt('Edit Contact','('+ e.value +')',ui.ButtonSet.OK_CANCEL);
if(response.getSelectedButton()==ui.Button.OK) {
//e.source.toast('flag2');
var ss=e.source.getSheetByName("Contacts");
ss.insertRowBefore(1);//added this
ss.getRange(1,1).setValue(response.getResponseText());
}
else if (response.getSelectedButton()==ui.Button.CANCEL) {
//e.source.toast('flag3');
Logger.log('no');
}
else {
//e.source.toast('flag4');
Logger.log('nope');
}
}
我找到了解决方法
onEdit 触发此函数
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);
}
}
我在边栏上有一个按钮可以触发此功能
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});
}
}