Googlesheets脚本 - 添加重复的递增数字

时间:2017-11-21 17:17:18

标签: javascript google-sheets-api

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

背景:

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

代码:

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

#include <vector>

template <typename T>
std::vector<T> flatten(const std::vector<std::vector<T>> & vec) {   
    std::vector<T> result;
    for (const auto & v : vec)
        result.insert(result.end(), v.begin(), v.end());                                                                                         
    return result;
}

2 个答案:

答案 0 :(得分:1)

查看modulo functions

将它想象成一个时钟,其值增加直到达到模数,此时它们开始“循环”。您需要打印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 :(得分:0)

使用modulo将有助于从1到12获取数字。

基于Google recomendations,您可以对代码进行的一项更改是在批处理操作上更新spreadhseet上的数据。 因此,您可以逐个更改每个单元格,而不是逐个更改每个单元格。

示例:

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
}