Question

Mon script est dans un document de feuille de calcul Google Voici mon script:

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 série de chiffres qui descendent chaque ligne.

Comme 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

Était-ce utile?

La solution

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

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

Mise à jour

Après avoir un regard sur la feuille de calcul j'avais passé quelques minutes et est venu avec 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 comment vous le souhaitez.

Chaque fois que certains insère un nouvel ID dans 2 / C, les ID manquants le nouvel ID tissés entre et l'ID dans 3 / C sont insérées automatiquement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top