首页 > 解决方案 > 在 Google 表格中归档一行时如何添加新行

问题描述

我目前在我的 Google 表格中有工作代码。当在下拉菜单中标记为“存档”时,代码将工作表中的某些行移动到另一个工作表。

我遇到的问题是,当这种情况发生时,整行都会被删除。我只需要存档 C:O (C2:O) 列中的信息。这产生的另一个问题是,当它删除其他行时,其他行向上移动,从而删除了我为输入创建的设定数量的行。

我需要它自动将存档行替换为具有所有相同条件格式和功能的另一行,这样它就不会破坏工作表的其余部分,并且无需进入并手动创建更多行。

请帮助,非常感谢您提前。

Google App Scripts 中使用的当前代码附在下面。

function myFunction() {
 // moves a row from a sheet to another when a magic value is entered in a column
 // adjust the following variables to fit your needs
 // see https://productforums.google.com/d/topic/docs/ehoCZjFPBao/discussion
 var sheetNameToWatch = 'Campaigns';
 var columnNumberToWatch = 6;
 // column A = 1, B = 2, etc…
 var valueToWatch = 'Archive';
 var sheetNameToMoveTheRowTo = 'Archive';
 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());
 }
}

标签: google-apps-scriptgoogle-sheetsarchive

解决方案


您只需要使用 copyTo() [1] 函数而不是 moveTo() [2] 函数来剪切和粘贴源行。此外,如果您只想保留具有相同格式和功能集的行单元格,则需要删除 deleteRow 功能。你只需要改变这个:

sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).moveTo(targetRange);
sheet.deleteRow(range.getRow());

对此:

sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange);

此外,如果您只想将值而不是公式从单元格复制到目标工作表,请使用带有选项 [3] 的 copyTo 函数,如下所示:

sheet.getRange(range.getRow(), 1, 1, sheet.getLastColumn()).copyTo(targetRange, SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);

[1] https://developers.google.com/apps-script/reference/spreadsheet/range#copytodestination

[2] https://developers.google.com/apps-script/reference/spreadsheet/range#movetotarget

[3] https://developers.google.com/apps-script/reference/spreadsheet/range#copytodestination-copypastetype-transposed


推荐阅读