0

私のスクリプトは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 列に入力するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

全体を見ずにコードを提供することはできませんが、解決方法についてアドバイスすることはできます。

  1. 新しい行を挿入する前に、新しい行が挿入される前の行にあった数値を変数に保存します。たとえば、文字列を数値に変換するためにlastNumber = parseInt(insertRowColumnC.getValue())必ず使用してください(!)parseInt
  2. 新しい行を挿入する
  3. 新しく挿入されたすべての行を上から下に繰り返します
  4. 各行で、最初lastNumberに 1 ずつ減らしてから、その値をその行の列 C に書き込みます。

アップデート

スプレッドシートを確認した後、数分かけて次のコードを思いつきました。

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 と 3/C の ID の間に欠落している ID が自動的に挿入されます。

于 2010-12-04T03:50:58.553 に答える