Google 表格脚本 - 添加重复的递增数字

Googlesheets script - add incrementing numbers that repeat

我是新来的。我需要支持我用于 Googlesheets 的代码。

背景:

我希望在 A 列中创建 1 到 12 并一遍又一遍地重复;像这样:1、2、3、[...]、12、1、2、[...]、12 等等。

代码:

我已经写了这段代码,但我不确定我哪里出错了。也不确定如何让它每次都在 12 点后重复。帮助将不胜感激。

var numRows = range.getNumRows();
for (var i = 1; i <= numRows; i++) {
var currentValue = sheet.getCell(i,1).getValue();
var withString = 0;
range.getCell(i,1).setValue(val + 1);
}

看看 modulo functions

可以把它想象成一个时钟,值会增加,直到达到模数,然后它们开始 "looping"。您将要打印 i % 12 的值,但由于它不是零索引而被修改,所以更像是 ((i - 1) % 12) + 1.

for (var i = 1; i < 36; i++) {
  console.log(i, ((i - 1) % 12) + 1);
}

结果:

1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 1
14 2
15 3
16 4
17 5
18 6
19 7
20 8
21 9
22 10
23 11
24 12
25 1
26 2
27 3
// etc etc

使用模数将有助于获得从 1 到 12 的数字。

您可以根据 Google recomendations 对您的代码进行的一项更改是在批处理操作中更新电子表格上的数据。 因此,您可以更改整个范围的值,而不是一个一个地更改每个单元格。

示例:

function addValuesToRows() {   
   var range = SpreadsheetApp.getActive().getActiveSheet()
       .getRange(1, 1, 100);   
   var numRows = range.getNumRows();   
   var values = range.getValues();   
   for (var i = 0; i < numRows; i++) {
      values[i][0] = (i % 12) + 1;  
   }   
   range.setValues(values); //Setting the value to the whole range
}