简单的Google电子表格脚本循环复制和粘贴单元格

时间:2016-04-26 00:31:08

标签: google-apps-script google-sheets

所以这很可能是最简单的问题,但我只是自己去学习。抱歉这个愚蠢的问题。

我有一个庞大的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);
}

1 个答案:

答案 0 :(得分:0)

要创建循环,您首先需要知道应该从哪里开始,何时停止以及进度有多快。

从第一行开始,直到最后一行使用getLastRow(),然后一步进行4行。

我建议您调整moveValuesOnly()以接受输入rowstart并使用循环调用它几次但具有不同的行值。请注意,您必须更改当前的硬编码输入" B2"和" A4"基于rowstart值的东西。 getDataRange().getValues();可能对您编辑工作表很有用。

循环看起来像

for (i=0; i<sheet.getLastRow(); i+=4) {
  moveValuesOnly(i);
}