首页 > 解决方案 > 谷歌表格脚本中的切换案例在输入单元格时无法识别某些案例,但在复制+粘贴时工作

问题描述

这是一个非常简单的脚本,我已经注意到失败的案例。我测试最多的案例是“ts”,当我将它键入单元格时,该值不会被替换,但是当我从脚本复制并将其粘贴到单元格时,它会替换该值。我已经多次重新键入该行代码以确保引号内没有多余的空格。任何关于为什么会发生这种情况的见解都非常感谢。

  switch (e.value) {
    case 'n':
      e.range.setValue('=Sheet5!B1');
      break;
    case 't':
      e.range.setValue('=Sheet5!B2');
      break;
    case 'i': //fails
      e.range.setValue('=Sheet5!B3');
      break;
    case 'c':
      e.range.setValue('=Sheet5!B4');
      break;
    case 's': //fails
      e.range.setValue('=Sheet5!B5');
      break;
    case 'st':
      e.range.setValue('=Sheet5!B6');
      break;
    case 'si': //fails
      e.range.setValue('=Sheet5!B7');
      break;
    case 'sc':
      e.range.setValue('=Sheet5!B8');
      break;
    case 'ts': //fails
      e.range.setValue('=Sheet5!B6');
      break;
    case 'is': //fails
      e.range.setValue('=Sheet5!B7');
      break;
    case 'cs':
      e.range.setValue('=Sheet5!B8');
      break;
    case 'd': //fails
      e.range.setValue('=Sheet5!B9');
      break;
    default:
      return;
  }
    return;
}```

标签: google-apps-scriptgoogle-sheetsswitch-statement

解决方案


如果您创建并安装 onEdit 触发器,则此方法有效,因为您无法使用简单的触发器更改值。

function onYourEdit(e) {
  var sh=e.range.getSheet();
  if(sh.getName()!='Sheet10')return;

  switch (e.value) {
    case 'n':
      e.range.setValue('=Sheet11!B1');
      break;
    case 't':
      e.range.setValue('=Sheet11!B2');
      break;
    case 'i': //fails
      e.range.setValue('=Sheet11!B3');
      break;
    case 'c':
      e.range.setValue('=Sheet11!B4');
      break;
    case 's': //fails
      e.range.setValue('=Sheet11!B5');
      break;
    case 'st':
      e.range.setValue('=Sheet11!B6');
      break;
    case 'si': //fails
      e.range.setValue('=Sheet11!B7');
      break;
    case 'sc':
      e.range.setValue('=Sheet11!B8');
      break;
    case 'ts': //fails
      e.range.setValue('=Sheet11!B6');
      break;
    case 'is': //fails
      e.range.setValue('=Sheet11!B7');
      break;
    case 'cs':
      e.range.setValue('=Sheet11!B8');
      break;
    case 'd': //fails
      e.range.setValue('=Sheet11!B9');
      break;
    default:
      return;
  }
  return;
}

推荐阅读