2010-12-04 3 views
0

Mon script est dans un document de feuille de calcul Google Voici mon script:Javascript. L'expansion d'une chaîne de nombres

ss = SpreadsheetApp.getActiveSpreadsheet();

function onOpen() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var menuEntries = [ {name: "10 Rows", functionName: "TenRows"}, 
         {name: "20 Rows", functionName: "TwentyRows"}, 
         {name: "30 Rows", functionName: "ThirtyRows"}, 
         {name: "40 Rows", functionName: "FortyRows"}, 
         {name: "50 Rows", functionName: "FiftyRows"}]      
    ss.addMenu("Insert Rows", menuEntries); 
} 


function TenRows() { 
    SpreadsheetApp.getActiveSheet().insertRowsBefore(2,10); 
} 

function TwentyRows() { 
    SpreadsheetApp.getActiveSheet().insertRowsBefore(2,20); 
} 

function ThirtyRows() { 
    SpreadsheetApp.getActiveSheet().insertRowsBefore(2,30); 
} 

function FortyRows() { 
    SpreadsheetApp.getActiveSheet().insertRowsBefore(2,40); 
} 

function FiftyRows() { 
    SpreadsheetApp.getActiveSheet().insertRowsBefore(2,50); 
} 

Dans la colonne C de ma feuille de calcul, j'ai une chaîne de nombres descendant chaque ligne.

Vous aimez cette

C 
7317 
7316 
7315 
7314 
7313 

Quand je lance mon script pour insérer un certain nombre de lignes, Comment puis-je faire en sorte qu'il continue automatiquement ce nombre croissant et entrées dans la colonne C?

Merci

Répondre

1

Je ne peux évidemment vous donner le code sans voir la chose, mais je peux vous donner des conseils sur la façon de le résoudre:

  1. Avant d'insérer les nouvelles lignes, enregistrez le nombre qui était dans la rangée après laquelle les nouveaux seront insérés, dans une variable par exemple lastNumber = parseInt(insertRowColumnC.getValue()) assurez-vous d'utiliser parseInt pour convertir la chaîne en un nombre (!)
  2. Insérez les nouvelles lignes
  3. maintenant itérer sur toutes les lignes nouvellement insérés de haut en bas
  4. Sur chaque ligne vous devez d'abord décrémentez lastNumber par un , puis écrire sa valeur dans la colonne C sur cette ligne

Mise à jour

Après avoir un regard sur la feuille de calcul que j'avais passé quelques minutes et est venu w Ce morceau de code:

function onEdit(e) { 
    var sheet = e.source.getActiveSheet(); 
    var r = e.source.getActiveRange(); 
    if (r.getColumn() == 3 && r.getRow() == 2) { 
    var value = parseInt(r.getValue()); 
    if (!isNaN(value)) { 
     var next = getFirstRowNumber(sheet); 
     if (value > next) { 
     var count = value - next; 
     sheet.insertRowsAfter(2, count); 
     for(var i = 2; i < 2 + count; i++) { 
      sheet.getRange(i + 1, 3).setValue(value); 
      value--; 
     } 
     r.setValue(''); 

     } else { 
     r.setValue(''); 
     Browser.msgBox('You need to enter a greater ID.'); 
     } 
    } else if (r.getValue() !== '') { 
     r.setValue(''); 
     Browser.msgBox('You need to enter a valid ID.'); 
    } 
    } 
} 

Votre question était un peu floue, mais cela fonctionne comme vous le souhaitez.

Chaque fois que certains insèrent un nouvel ID en 2/C, les identifiants manquants sont les nouveaux ID et les ID en 3/C sont automatiquement insérés.

+0

Ivo, Y at-il de toute façon que je puisse partager le document avec vous. Je ne suis pas sûr de savoir comment mettre en œuvre cela. – David

Questions connexes