【发布时间】:2016-04-26 00:31:08
【问题描述】:
所以这很可能是最简单的问题,但我只是自己学习。抱歉这个愚蠢的问题。
我有一个巨大的 Google 电子表格(超过 2700 行)我需要循环并自动将数据从一个单元格 (dataA) 移动到另一个单元格(在以 dataB 开头的下一行数据之前),然后删除 3数据行上方的行并移动到下一条记录(4 行的块)。在我做任何事情之前,我必须通过插入一列来腾出空间。
我创建了一个插入列的函数,将第一个数据单元格(现在是 B2)复制到其新目标(A4),然后正确删除目标上方无用的三行。因为这是相对的和迭代的,所以我不知道如何使用循环来调整这部分,该循环将遍历整个工作表的其余部分。
如何创建一个循环,遍历每个 4 行块,执行上述操作,然后移动到下一个 4 行块,将每个完成的行一个接一个地留在顶部?
这是一个起始数据结构的例子:
starting data structure - one record of many
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet ();
var sheet = ss.getSheets()[0];
// This inserts a column in the first column position
sheet.insertColumnBefore(1);
var start = ss.getRange("B2");
var source = ss.getRange("B2");
source.copyTo (ss.getRange ("A4"), {contentsOnly: true});
source.clear ();
sheet.deleteRows(1, 3);
}
【问题讨论】:
-
我会写一个函数来做到这一点。您需要使用 getRange 的行、列值而不是 A1 表示法。将工作表作为参数传递给函数,并将源行/列和目标行/列作为参数传递。然后遍历您的行并根据需要调用此函数递增行/列。也可以更快地创建一个新工作表而不是删除旧行。
-
我理解它在理论上是如何工作的,语法本身就是我挣扎的地方。
标签: google-apps-script google-sheets