使用数组输入到谷歌电子表格的自动编号

时间:2014-09-29 17:15:47

标签: google-apps-script spreadsheet

我最近开始研究GAS。 我用低号写了自动编号脚本。 有电子表格有一些数据,我想一次把A列包括批次ID号。

function autoID() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastrow = sheet.getLastRow();
for(i=1; i<= lastrow-1; i++)
{
var num = sheet.getRange(i,1);
num.setValue(i);
}  
 Browser.msgBox("This is end!");
}

这在没有好的例子中,需要花费太多时间。

我想我应该使用Array().. 可能是↓这是提示..

https://developers.google.com/apps-script/best_practices

但是这个最佳实践不起作用,我试过了......

 function autoID() {
 var sheet = SpreadsheetApp.getActiveSheet();
 var lastrow = sheet.getLastRow();
 var num = new Array();
 idrange = sheet.getRamge("A2:A"+(lastrow-1));
 idrange = idrange.getValues();
 for(i=1; i<= lastrow-1; i++)
 {
 var num = sheet.getRange(i,1);
  num[(i)]=i;
 }  
 Browser.messageBox(num[1]); // this is 1;
 idrange.setValues(num); // this is error
 }

如何更改类型?

请帮帮我..

我认为这一定很容易。


1 个答案:

答案 0 :(得分:0)

不确定我到底知道你想要做什么但是这里是如何工作而没有代码错误:

function autoID() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var lastrow = sheet.getLastRow();
  var num = new Array();
  var idrange = sheet.getRange("A2:A"+(lastrow));
  var idrangeVal = idrange.getValues() 
  for(var i in idrangeVal){
    num.push([i]);
  }  
  idrange.setValues(num); 
}

在评论后编辑:

这是(我希望)做你期望的版本......

function autoID() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var valuesInrangeA = sheet.getRange('A2:A').getValues();
  var maxA = 0
  for(var n=0 ;n<valuesInrangeA.length ; n++){
    if(valuesInrangeA[n][0]!=''){maxA=n+2};
  };
  var num = new Array();
  for(var i=1 ; i<maxA ; i++){
    num.push([i]);
  }  
  sheet.getRange("B2:B"+maxA).setValues(num);
}