google-apps-script - 基于单元格值脚本将行移动到另一个工作表
问题描述
希望使用脚本根据谷歌表格中的值移动单元格。在观看了一些有关基础知识的视频并使用在网站上找到的代码之后,这一切都超级绿色,试图使这项工作适用于我的电子表格。
function doneCopy() {
var app = SpreadsheetApp;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetNameToWatch = ss.getSheetByName("Current")
var columnNumberToWatch = 8;
var valueToWatch = "DONE" ;
var sheetNameToMoveTheRowTo = "OLD";
//var ss = SpreadsheetApp.getActiveSpreadsheet();//this has already been declared
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == "Current" && range.getColumn() == 8 && range.getValue() == "DONE") {
var targetSheet = ss.getSheetByName("OLD");
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
它似乎根本不起作用。这是电子表格的链接:https ://docs.google.com/spreadsheets/d/1iRMuKKhC83lot4TV2dbOfBlgdtVzSuZ0rkoWKyTOUIM/edit?usp=sharing
最终目标:当“状态”列为“完成”时,整行移动到“旧”表(在底部添加一行)然后从“当前”表中删除
解决方案
- 您想通过运行脚本将“H”列中具有“完成”的所有行移动到“旧”工作表。
- 您想通过自定义菜单运行脚本。
我可以像上面那样理解。如果我的理解是正确的,那么这个修改呢?我认为您的情况有几个答案。所以请认为这只是其中之一。修改后的脚本流程如下。
- 检索“当前”工作表上“H”列的值。
- 检索行索引以移动到“旧”工作表。
- 移动值。
- 删除行。
修改后的脚本:
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Custom Menu')
.addItem('doneCopy', 'doneCopy')
.addToUi();
}
function doneCopy() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Current");
var values = sheet.getRange(1, 8, sheet.getLastRow(), 1).getValues();
var moveRows = values.reduce(function(ar, e, i) {
if (e[0] == "DONE") ar.push(i + 1);
return ar;
}, []);
var targetSheet = ss.getSheetByName("OLD");
moveRows.forEach(function(e) {
sheet.getRange(e, 1, 1, sheet.getLastColumn()).moveTo(targetSheet.getRange(targetSheet.getLastRow() + 1, 1));
});
moveRows.reverse().forEach(function(e) {sheet.deleteRow(e)});
}
笔记:
onOpen()
当您打开电子表格时运行。打开电子表格后,请从自定义菜单运行脚本。
参考:
推荐阅读
- amazon-web-services - 如何通过 API 检查 AWS 服务的运行状态
- c# - WebForm 中的 AsyncFileUpload 问题(在服务器中发布后) - 未找到“AjaxControlToolkit.Properties.Resources.resources”
- excel - 如何将多行添加到 Power Query 表 VBA 宏?
- javascript - 在函数 Reactjs 中调用 const
- clojure - Clojure:删除树的所有叶子中的值
- if-statement - Excel:如何使用 if(countif) 使用多个范围来返回多个文本?
- laravel-7 - 无法安装 cviebrock/eloquent-sluggable
- c# - 无法在 Exited eventhadler 中捕获进程名称和退出代码
- .net - 获取 PEM 公钥和私钥或从 PFX 文件
- reactjs - 获取“JSX 元素类型‘App’没有任何构造或调用签名。” 导出 JSX 元素数组时出现 ts(2604) 错误