2010-12-04 5 views
0

Моего сценария находится в табличном документе Google Вот мой сценарий:Javascript. Расширение строки чисел

сс = 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); 
} 

В колонке C моей таблицы у меня есть строка чисел, идущих вниз по каждой строке.

Как это

C 
7317 
7316 
7315 
7314 
7313 

Когда я бегу мой сценарий, чтобы вставить несколько строк, как я могу сделать это так, то он автоматически продолжает этот восходящий ряд и входы его в колонке C?

Благодаря

ответ

1

я, очевидно, не может дать вам код, не видя все это, но я могу дать вам совет о том, как решить эту проблему:

  1. Перед установкой новых строк, сохранить число, которое было в строке, после которой новые будут вставлены в переменную, например lastNumber = parseInt(insertRowColumnC.getValue()) обязательно используйте parseInt, чтобы преобразовать строку в число (!)
  2. Вставьте новые строки
  3. Теперь перебрать все вновь вставленные строки из верхней части к нижним
  4. На каждой строке первого декремента lastNumber одним , а затем записать его значение в столбце с этой строке

Update

После того, как взглянуть на таблицу я потратил несколько минут и подошел ш с этой частью кода:

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.'); 
    } 
    } 
} 

Ваш вопрос был немного неясным, но это работает так, как вы этого хотите.

Всякий раз, когда некоторые вставки нового идентификатора в 2/C, недостающие идентификаторы означают новый идентификатор, а идентификатор в 3/C вставлены автоматически.

+0

Ivo, В любом случае, я мог бы поделиться с вами документом. Я не уверен, что знаю, как это реализовать. – David 2010-12-04 03:52:19