我是 Google 表格新手,如果我将 F 列更改为“完成”,有人可以帮我编写代码,将整行移动到其他特定行吗? 例如:如果我将 F3 更改为“完成”,则整个第 3 行将自动移至第 40 行之后
注意:过滤功能在这种情况下对我们不起作用^^ 我尝试了宏,但是...必须手动激活宏^^,如果有一个脚本可以帮助自动执行宏,那就太好了,感谢您的帮助
onChange
触发器根据下拉菜单自动移动行尝试使用 Google Apps 脚本来实现您的预期输出。
下面的函数将 F 列中标记为
Done
的行移动到第 40 行之后。它会清除它们的原始位置并将它们粘贴到新位置(从第 40 行开始),而不会破坏工作表布局。之后,设置可安装的 onChange trigger
,以便在发生更改时自动更新。
您可以尝试这个代码:
function moveToRow() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Sheet1");
var dataRange = sheet.getRange(1, 1, 39, 6);
var data = dataRange.getValues();
var arrayToPaste = [];
for (i = 0; i < 38; i++) {
if (data[i][5] == "Done") {
arrayToPaste.push(data[i]);
sheet.getRange(i + 1, 1, 1, 6).clear();
}
}
var rowToPaste = sheet.getLastRow();
if (rowToPaste <= 39) {
rowToPaste = 40;
}
sheet.getRange(rowToPaste + 1, 1, arrayToPaste.length, 6).setValues(arrayToPaste);
}
设置可安装的 onChange 触发器:
1.) 打开脚本编辑器(扩展 > Apps 脚本)。
2.) 在脚本编辑器中,转到左侧边栏中的触发器(时钟图标)。
3.) 单击右下角的 + 添加触发器。
4.) 选择 onChange 作为要运行的函数。
5.) 选择来自电子表格并选择更改时作为事件类型。
6.) 保存触发器。
示例输出:
参考: