【发布时间】:2020-03-24 09:09:53
【问题描述】:
我需要将工作表的最后修改用户和日期存储在开发人员元数据中。
我使用 onEdit 函数在每次编辑工作表时更新这些元数据(请参阅下面的代码)
我的问题是在撤消历史记录中考虑了元数据的创建/更新。
所以用户需要ctrl+Z 3次才能取消...
你知道避免这种行为的方法吗?
function onEdit(e) {
// Prevent errors if no object is passed.
if (!e) return;
var dateMetadata;
var dateKey = 'lastModificationDate';
var userMetadata;
var userKey = 'lastModificationUser';
// Get the active sheet.
var sheet = e.source.getActiveSheet();
var user = e.user.getEmail();
var date = Math.floor(Date.now() / 1000);
metadatas = sheet.getDeveloperMetadata();
for each (var m in metadatas) {
if (m.getKey() === dateKey) {
dateMetadata = m;
}
if (m.getKey() === userKey) {
userMetadata = m;
}
}
if (dateMetadata) {
dateMetadata.setValue(date);
} else {
sheet.addDeveloperMetadata(dateKey, date);
}
if (userMetadata) {
userMetadata.setValue(user);
} else {
sheet.addDeveloperMetadata(userKey, user);
}
}
【问题讨论】:
标签: google-apps-script google-sheets