我正在制作一个属性资产管理数据库。我有一个单元表,它允许我查看和编辑单元/租户信息。一个名为Unit_SaveUpdate()
的函数将数据库中的任何更改保存到另一个工作表中。
我最初将Unit_SaveUpdate()
分配给按钮的绘图,但放弃了这种方法,因为如果用户正在编辑单元格,并且在点击"enter"之前按下按钮;在已编辑的单元格上,它不会更新数据库。也不兼容移动设备。
在它的位置,我使用了@TheMaster描述的复选框方法,通过一个可安装的onEdit触发器。
原来我遇到了和以前完全一样的问题。如果我点击回车键;在我正在编辑的单元格上单击"保存/更新"之前复选框,它工作得很好。但是,如果我没有按回车键在我正在编辑的单元格上,然后单击"保存/更新"。复选框,什么也没发生。代码根本不执行。请参阅下面的代码和两个演示问题的视频。
我认为复选框方法应该解决这个问题。有人知道我哪里做错了吗?谢谢你!
示例1:如果用户点击"Enter"前复选框:
<iframe class="embeddedObject shadow resizable" name="embedded_content" scrolling="no" frameborder="0" type="text/html"
style="overflow:hidden;" src="https://www.screencast.com/users/KimHopkins2598/folders/Capture/media/14cb741f-2fbb-4157-ba47-c09a7e508839/embed" height="340" width="1426" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
示例2:如果用户没有点击"Enter"前复选框:
<!-- copy and paste. Modify height and width if desired. -->
<iframe class="embeddedObject shadow resizable" name="embedded_content" scrolling="no" frameborder="0" type="text/html"
style="overflow:hidden;" src="https://www.screencast.com/users/KimHopkins2598/folders/Capture/media/3ce7b5af-b600-4f3f-8044-abe63119769e/embed" height="334" width="1420" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
代码:
function installedonEdit(event){
var app = SpreadsheetApp;
var activeSheet = app.getActiveSpreadsheet();
var sheet = event.source.getActiveSheet().getName();
var editedCell = event.range.getSheet().getActiveCell();
if(sheet == "Units"){
var sheetUnits = activeSheet.getSheetByName('Units');
const rg = event.range;
const rangeA1 = rg.getA1Notation();
//Button to Save/Update
var SaveUpdateA1 = sheetUnits.getRange('O8').getA1Notation(); //A1 notation of Save/Update button
if(rangeA1 === SaveUpdateA1 && rg.isChecked()){
//sheetUnits.getRange('P2').setValue("Wow");
Unit_SaveUpdate();
rg.uncheck();
}
}
}
只需单击复选框即可可靠地工作:
function onMyEdit(e) {
e.source.toast('entry');
Logger.log(JSON.stringify(e));
const sh = e.range.getSheet();
if(sh.getName() == "Sheet0" && e.range.columnStart == 1 && e.range.rowStart == 1 && e.value == "TRUE") {
e.range.setValue("FALSE")
e.source.toast('flag');
}
}
学习更多