的JavaScript。扩展一串数字

时间:2010-12-04 03:24:11

标签: javascript google-apps-script google-sheets

我的脚本位于Google电子表格文档中 这是我的剧本:

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

在我的电子表格的C栏中,每行都有一串数字。

喜欢这个

 C
7317
7316
7315
7314
7313

当我运行我的脚本以插入多行时,我如何才能使它自动继续这个升序数并将其输入C列?

由于

1 个答案:

答案 0 :(得分:1)

我显然不能在没有看到整个事情的情况下给你代码,但我可以就如何解决它给你建议:

  1. 在插入新行之前,将插入新行的行中的数字保存到变量中,例如lastNumber = parseInt(insertRowColumnC.getValue())请确保使用parseInt将字符串转换为数字(!)
  2. 插入新行
  3. 现在从上到下迭代所有新插入的行
  4. 在每一行上,您首先将lastNumber递减1,然后将其值写入该行的C列
  5. 更新

    看完电子表格后,我花了几分钟时间想出了这段代码:

    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中插入新ID时,新ID会丢失ID,并且会自动插入3 / C中的ID。