Vinnaren i pepparkakshustävlingen!
2018-07-07, 22:45
  #1
Medlem
Här är ett skript i Google Kalkylark som automatiskt lägger till siffror i nummerordning. Hur gör man för att skriptet ska börja räkna från siffran 0?

Kod:
function myFunction() {

  var AUTOINC_COLUMN = 0;
  var HEADER_ROW_COUNT = 1;
  
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var worksheet   = spreadsheet.getSheetByName("Sheet1");
  var rows        = worksheet.getDataRange().getNumRows();
  var vals        = worksheet.getSheetValues(1, 1, rows+1, 2);
  
  for (var row = HEADER_ROW_COUNT; row < vals.length; row++) {
    try {
      var id = vals[row][AUTOINC_COLUMN];
      Logger.log(id);Logger.log((""+id).length ===0);
      if ((""+id).length === 0) {
        // Here the columns & rows are 1-indexed
        worksheet.getRange(row+1, AUTOINC_COLUMN+1).setValue(row);
      }
    } catch(ex) {
      // Keep calm and carry on
    }
  }
}

Källa: https://blog.cloudstitch.com/auto-in...s-d9b31b2cc060[/quote]
Citera
2018-07-07, 22:59
  #2
Medlem
LeonVances avatar
for (var row = HEADER_ROW_COUNT-1; row < vals.length-1; row++) {
Citera
2018-07-07, 23:20
  #3
Medlem
Citat:
Ursprungligen postat av LeonVance
for (var row = HEADER_ROW_COUNT-1; row < vals.length-1; row++) {

Jag testade, men skriptet verkar fortfarande räkna från siffran 1.

Citera
2018-07-07, 23:34
  #4
Medlem
LeonVances avatar
Citat:
Ursprungligen postat av obyn
Jag testade, men skriptet verkar fortfarande räkna från siffran 1.



Kod:
function myFunction() {

  var AUTOINC_COLUMN = 0;
  var HEADER_ROW_COUNT = 1;
  
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var worksheet   = spreadsheet.getSheetByName("Sheet1");
  var rows        = worksheet.getDataRange().getNumRows();
  var vals        = worksheet.getSheetValues(1, 1, rows+1, 2);
  
  for (var row = HEADER_ROW_COUNT; row < vals.length; row++) {
    try {
      var id = vals[row][AUTOINC_COLUMN];
      Logger.log(id);Logger.log((""+id).length ===0);
      if ((""+id).length === 0) {
        // Here the columns & rows are 1-indexed
        worksheet.getRange(row+1, AUTOINC_COLUMN+1).setValue(row-1);
      }
    } catch(ex) {
      // Keep calm and carry on
    }
  }
}

Prova detta!
Citera
2018-07-07, 23:45
  #5
Medlem
Citat:
Ursprungligen postat av LeonVance
Prova detta!

Tackar, detta fungerade bättre. Av någon anledning så lade skriptet till en siffra för mycket på slutet.

Jag tog bort +1 efter ordet rows från den här raden.

Kod:
var vals        = worksheet.getSheetValues(1, 1, rows+1, 2);
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback