如何根据编辑内容激活不同的单元格



在Google Sheets的Google Apps脚本中,我想使用条形码扫描仪将新数据输入到单元格中。如果这个新数据符合我的预期,我希望激活另一个单元格,这样我就可以继续输入数据。这用于创建库存,输入的初始数据(以及代码检查的内容)将是当时使用扫描仪的人员的姓名。到目前为止,我拥有的是:

var ss = SpreadsheetApp.getActive()
var sheet1 = SpreadsheetApp.getActive().getSheetByName("Sheet1")
//Set active cell to A2 (cell below Name header) when file is opened.
function onOpen() {
sheet1.getRange('A2').activate();
}   
function onEdit(e)  {
if (e.range.getA1Notation() === 'A2') {
var nameval = sheet1.getActiveCell.getValue();
if (nameval == 'Alpha' || nameval == 'Beta')  {
sheet1.getRange('D7').activate();
}
else  {
sheet1.getRange('F1').activate();
}}}

不幸的是,这似乎没有任何作用——单元格中的值被接受,但当输入任何一个激活情况时,新单元格都没有激活。

修改点:

  • 在脚本中,sheet1不会解密
  • sheet1.getActiveCell.getValue()getActiveCell不作为方法运行
  • 我认为nameval == 'Alpha' || nameval == 'Beta'可能是由includes编写的

当这些点反映在脚本中时,它会变成如下。

修改的脚本:

function onEdit(e) {
var range = e.range;
var sheet1 = range.getSheet();
if (range.getA1Notation() === 'A2') {
var active = ['Alpha', 'Beta'].includes(range.getValue()) ? "D7" : "F1";
sheet1.getRange(active).activate();
}
}
  • 在这个修改后的脚本中,当"Alpha"或"Beta"的值被放入单元格"时;A2";,细胞";D7〃;被激活。当除"Alpha"one_answers"Beta"之外的值被放入单元格时;A2";,细胞";F1";被激活

注意:

  • 此脚本由OnEdit简单触发器自动运行。因此,当您使用脚本编辑器直接运行此脚本时,会发生错误。请小心

参考文献:

  • 简单触发器
  • includes()

最新更新