google-apps-script - 在 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());
}
}
解决方案
您只需要使用 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
推荐阅读
- powershell - 如何使用 PSM1 文件安装模块?
- sql-server - 在 SQL JOB 中运行 BCP 命令时出错
- angularjs - 如何在 Angular JS 中使用 gridOption-enableRowselection 动态更改 ui-grid
- visual-studio-code - 如何在 Flutter 的 Visual Studio 代码中更新本地包
- r - 是否有用于绘制单个 rasterLayers 的 R 函数?
- sql - 跨生产的 SQL 查询优化?
- html - 如何删除字体的斜体行为。如果按钮是 TILT?
- acumatica - 将下一个按钮添加到 CashAccountDetails
- foreach - 对于每个引用或值
- python - 如何在conda中创建一个python环境,唯一的区别是python的版本?