javascript - 将数据移动到列中的第一个可用单元格(不是行)
问题描述
我有一张表来监控库存。我在工作表中有一个脚本,用于复制带有数据的行的值并粘贴到另一张工作表上的第一个可用行,然后清除内容。这会在原始工作表上的数据中留下漏洞。我想将我的所有数据合并到一列中的第一个可用单元格,这样数据行之间就永远不会有空行。不幸的是,我不能对另一张工作表做同样的事情,因为我的行中有某些列有需要保留的公式(求和公式来计算重量等)。如果我抓住整行,它会弄乱我的公式或公式弄乱脚本(行不可用,因为它包含一个值)。所以基本上我所拥有的是:
Sheet1 name = 'CURRENT MONTH'
Sheet2 name = 'SHIPPED INVENTORY'
Sheet1 上具有数据的总范围 = A11:W61
具有需要向上移动的数据的范围 =A11:O61, R11:S61, V11:W61
具有不能移动的公式的范围 =P11:Q61, T11:U61
我已经搜索了我能找到的东西,但要么我无法正确表达我的困境,要么答案超出了我的技能水平,我无法让它们为我工作。非常感谢任何帮助!
解决方案
在没有看到您如何将信息从一张表移动到另一张表的情况下,此代码将整行复制到库存表的第一行:
function myFunction ()
{
...
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var month_sheet = ss.getSheetByName ("CURRENT MONTH");
var shipped_sheet = ss.getSheetByName ("SHIPPED INVENTORY");
var month_values = month_sheet.getDataRange ().getValues ();
for (var i = 11; i < month_values.length && i <= 61; i++)
{
if (test_value) // This is a row you want to move to the other sheet
{
// Create a row in the SHIPPED INVENTORY sheet,
// and copy the full row into it
shipped_sheet.insertRowAfter (1); // Assuming a header row
var shipped_row_1= shipped_sheet.getRange (2, 1); // Get second row in file
var month_range = month_sheet.getRange ((i + 1), 1, 1, month_sheet.getMaxColumns ());
month_range.copyTo (shipped_row_1);
// Now move everything else up
moveRangeUp (month_sheet, "A", i, "O61");
moveRangeUp (month_sheet, "R", i, "S61");
moveRangeUp (month_sheet, "V", i, "W61");
i--; // Since everything moved up, check this row's new information
}
}
...
}
function moveRangeUp (sheet, first_col, row, last_col_row)
{
var from_a1Notation = first_col + (i + 1) + ":" + last_col_row;
var to_a1Notation = first_col + (i);
var copy_range = sheet.getRange (from_a1Notation);
var to_range = sheet.getRange (to_a1Notation);
copy_range.copyTo (to_range);
// After shift up, delete last row of data, since it is also moved up
// Always assuming that the last row is row 61
var delete_a1Notation (first_col + "61:" + last_col_row);
var delete_range = sheet.getRange (delete_a1Notation);
var delete_range.clear ();
}
推荐阅读
- java - 图形/JPanel 尺寸不是以像素为单位测量的吗?
- c - 为什么第 10 个循环在 C 程序中结束时循环语句会出错?
- swiftui - 如何在 SwiftUI 中手动显示 contextMenu?
- python - 字符串识别前阈值不正确
- android - 如何在 PreferenceScreen 中显示 RadioButton 列表(不在对话框中)
- spring - 仅更新现有实体的“更改值”
- javascript - React Native Flatlist 在上拉时不刷新数据
- django - 错误 5 IIS 上的访问被拒绝 (python.exe)
- azure - 创建时间后如何获取 Azure 服务主体的密码?
- c# - 将带有 GROUP BY 和 COUNT 的查询转换为 Linq