[英]Moving values from a row to the next tab without keeping formatting in google sheets
从下拉菜单中选择“实时”后,我试图将行移至下一个标签。 我只希望忽略值和格式。
我过去曾在编辑上进行过这项工作,但最近它决定除非我在工作表上按下按钮,否则它将无法工作,并且它也开始使用它来拖拽所有数据验证和条件格式。 我没有更改脚本中的任何内容,也不认为我的任何同事也有更改。
任何帮助将非常感激。
function Projects(e) {
// moves whole row when "Live" is selected from drop down menu
var sheetNameToWatch = "Projects";
var columnNumberToWatch = 8;
var valueToWatch = "Live";
var sheetNameToMoveTheRowTo = "Status Tracker";
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getActiveCell();
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());
}
}
两件事情:
以下修改后的代码将为您工作。 请注意,我还进行了一些更改,以充分利用传递给它的事件对象的优势。
function Projects(e) {
// moves whole row when "Live" is selected from drop down menu
var sheetNameToWatch = "Projects";
var columnNumberToWatch = 8;
var valueToWatch = "Live";
var sheetNameToMoveTheRowTo = "Status Tracker";
var ss = e.source; // use the event object to get the spreadsheet
var range = e.range; // use the event object to get the edited cell
var sheet = e.range.getSheet(); // use the event object to the get the sheet
if (sheet.getName() == sheetNameToWatch && range.getColumn() == columnNumberToWatch && range.getValue() == valueToWatch) {
var targetSheet = ss.getSheetByName(sheetNameToMoveTheRowTo);
var targetRange = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange, {contentsOnly:true});
sheet.deleteRow(range.getRow());
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.