google-apps-script - 当我在特定范围内编辑时的 msgBox
问题描述
好吧,基本上我想做的是:
例子:
范围:D7:J30
在此间隔内进行任何编辑时,都会为编辑器显示一个 msgBox,但是,仅在插入内容的情况下,而不是在删除内容的情况下。
可能吗?
解决方案
其实这个任务有点棘手。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”上),您将收到以下消息:
推荐阅读
- javascript - 如何让 JS “看到”已发布到当前页面的 html
- webpack - 配置 webpack、coffeescript、mocha 和 mochapack 的问题
- entity-framework - 错误无法更新数据库以匹配当前模型,因为有待处理的更改
- javascript - 在 JS 中从 chrome 扩展中保存和读取数据
- xamarin.forms - Xamarin Forms CollectionView 无法正常工作(支持库?)
- r - R 将 SQLiteResult 记录集导出到 Excel 或 csv
- interface - 在启动时使用 systemd 启用 vcan0 接口
- android - 如何通过定时通知启动我的服务
- syntax - 尝试使用 getUserMedia(next.js 应用程序)时出现 SyntaxError Unexpected Token
- node.js - 使用 node.js 中的子方向重定向(快速)