onEdit,breakApart,未按计划工作

时间:2019-12-19 16:36:24

标签: javascript google-apps-script

当前代码不起作用

function onEdit() {
var sheet = SpreadsheetApp.getActive().getSheetByName('Class');
var level = sheet.getRange('K3').getValue();
var class = sheet.getRange('L3').getValue();
  if (class === "Warlock") {
    sheet.getRange('A7:D7').breakApart();
    sheet.getRange('A7:D7').mergeAcross();
  } else if (class === "Fighter") {
      sheet.getRange('A7:D7').breakApart();
      sheet.getRange('A7:B7').mergeAcross();
    } else {
    }

这是说要根据class来分解和合并单元格,并且无法识别并且什么也没有发生。调试器说很好,但是我似乎看不到什么不起作用。

2 个答案:

答案 0 :(得分:1)

breakApartmerge处于同一范围。因此,它已分解并合并。因此,似乎什么都没有发生:如果它之前被合并过,它将在中断后最后保持合并。

答案 1 :(得分:1)

如果以这种方式运行,它将在术士和战斗机之间切换,并且您会看到合并中的细微变化,尤其是突出显示A7:D7时。我只是在A1中插入了一个复选框以使其切换。

 function onEdit(e) {
  e.source.toast('Flag1');//remove after debug
  var sh=e.range.getSheet();
  if(sh.getName()!='Sheet1')return;
  var class = sh.getRange('L3').getValue();
  e.source.toast('Flag2');//remove after debug
  if (class=="Warlock") {
    e.source.toast('Flag3');//remove after debug
    sh.getRange('A7:D7').breakApart();
    sh.getRange('A7:D7').mergeAcross();
    sh.getRange('L3').setValue('Fighter');//remove after testing    
    sh.getRange('A7:D7').setBorder(true,true,true,true,true,true);//remove after testing
    sh.getRange('A7:D7').setBackground('#ffff00');//remove after testing
  } else if (class=="Fighter") {
    e.source.toast('Flag4');//remove after debug
    sh.getRange('A7:D7').breakApart();
    sh.getRange('A7:B7').mergeAcross();
    sh.getRange('L3').setValue('Warlock');//remove after testing
    sh.getRange('A7:B7').setBorder(true,true,true,true,true,true);//remove after testing
    sh.getRange('A7:D7').setBackground('#ffffff');//remove after testing
    sh.getRange('A7:B7').setBackground('#ff00ff');//remove after testing
  }
}