首页 > 解决方案 > 当我在特定范围内编辑时的 msgBox

问题描述

好吧,基本上我想做的是:

例子:

范围:D7:J30

在此间隔内进行任何编辑时,都会为编辑器显示一个 msgBox,但是,仅在插入内容的情况下,而不是在删除内容的情况下。

可能吗?

标签: google-apps-script

解决方案


其实这个任务有点棘手。onEdit()触发器无法识别插入单元格。它需要一个可安装的onChange()触发器。

要安装触发器,请将此功能放入脚本编辑器并运行它:

function set_trigger() {
  ScriptApp.newTrigger('alert')
    .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet())
    .onChange()
    .create();
}

然后在脚本编辑器中放入下一个函数:

function alert(e) {
  var sheet = e.source;.getActiveSheet();
  if (sheet.getName() != 'Sheet1') return; // if the sheet name not 'Sheet1' do nothing

  var range  = sheet.getActiveRange();
  var top    = range.getRow();
  var bottom = range.getLastRow();
  var left   = range.getColumn();
  var right  = range.getLastColumn();

  if (      top < 7 
              || 
    left < 4  ||  right > 10
              || 
          bottom > 30       ) return; // ;)

  if (range.getValues().flat().filter(String).length == 0) return; // if the range is empty do nothing
  
  SpreadsheetApp.getUi().alert('Something was changed');
}

之后,如果您尝试将某些内容添加(写入或插入)到“D7:J30”范围内的任何单元格中(在工作表“Sheet1”上),您将收到以下消息:

在此处输入图像描述


推荐阅读