sorting - Google表格:在表格之间移动行和排序时如何处理过滤视图?
问题描述
感谢您花时间看这个。
我有一张工作表,我在其中拼凑了一个脚本,该脚本在编辑某个值时移动一行,然后对所涉及的工作表进行多种排序,以便该行在新工作表上按顺序排列。效果很好。
但是,现在问我是否可以使用过滤器进行这项工作。这就是事情变得不稳定的地方。当使用过滤器时,排序功能会在它们移动一行时破坏过滤器。此外,过滤后的括号会缩小,尽管行已排序并最终在过滤后的括号内,但其他行会被推出,等等。这有点难以解释,所以这里有两个例子:
在未经过滤的工作表中运行的脚本:https ://docs.google.com/spreadsheets/d/1Uwge7eS6DXJvbNi-7kRY9djg4Cq2r4QO9BeyNjnhkCg/edit?usp=sharing
(如果需要,您可以关闭和打开过滤器以将其重置)
移动行时,是否可以在活动过滤集中对其进行排序?我不确定这是可能的。是吗?
我的解决方法是让排序函数在 onOpen 上执行,这样它们就不会破坏任何人过滤的数据,但是这张表有相当多的用户,所以我不确定它是否曾经关闭过。还有其他建议吗?
感谢您的时间和考虑。谢谢你。我希望有一天我能回报这个人情。
这是脚本:
SORT_DATA_RANGE = "A2:F99"
SORT_ORDER= [
{column: 4, ascending: true},
{column: 5, ascending: true}];
function onEdit(event) {
movethings1(event);
sortthings1()
sortthings2();
}
function movethings1(event) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = event.source.getActiveSheet();
var r = event.source.getActiveRange();
if(r.getColumn() == 2 && ( r.getValue() == "paid" || r.getValue() == "unpaid"
|| r.getValue() == "pending") ) {
var row = r.getRow();
var numColumns = s.getLastColumn();
var targetSheet;
if(r.getValue() == "paid")
targetSheet= ss.getSheetByName("Paid");
else if(r.getValue() == "unpaid")
targetSheet= ss.getSheetByName("Unpaid");
else if(r.getValue() == "pending")
targetSheet= ss.getSheetByName("Unpaid");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).moveTo(target);
s.deleteRow(row);}
}
function sortthings1() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Unpaid");
var range = sheet.getRange(SORT_DATA_RANGE);
range.sort(SORT_ORDER);}
function sortthings2() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Paid");
var range = sheet.getRange(SORT_DATA_RANGE);
range.sort(SORT_ORDER);
ss.toast('done that thing you wanted');}
解决方案
推荐阅读
- html - HTML / CSS:垂直对齐范围与垂直对齐和行高
- java - 未找到请求操作的编解码器:[冻结
<-> java.util.Map ] - javascript - 承诺未在 Jest 测试中执行
- ios - 将数据填充到使用 xib 创建的 UIcollectionview 单元格
- gerrit - 使用插件 metrics-reporter-prometheus 通过 Prometheus 监控 Gerrit 内部
- keras - Keras 多输出模型
- python - 'MIMEText' 对象没有属性 'encode'
- html - 让 CSS 悬停样式只影响超链接
- sql-server - 如何修复 SQL Server PowerShell 模块缺少的 Microsoft.SqlServer.Management.CloudAdapter.Data?
- spring - Spring Reactive 事件和事务上下文