2016-05-11 7 views
0

スプレッドシートを並べ替える方法を探しています。私は周りを見回し、 "編集中"機能を見つけましたが、私はそれを使用する方法について完全にはわかりません。そして、それはどのようにGoogleスクリプトのための唯一の5分のランタイムで動作する、セルチェンジはトリガーとして動作するのですか? 編集時にGoogleスプレッドシートを並べ替える

function AutoSortOnEdit() { 

    var sheet = SpreadsheetApp.openById("...").getSheetByName("..."); 
    var range = sheet.getRange(5, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); 
    range.sort({column: 1, ascending: true}); 
    }); 

は今、私は最初の行でソートアルファベット順にシートを並べ替えたい:

function AutoSortOnEdit() { 
    var sheetNames = ["testsheet456", "testsheet457", "testsheet458"]; 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    sheetNames.forEach(function(name) { 
    var sheet = ss.getSheetByName(name); 
    var range = sheet.getRange(5, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); 
    range.sort({column: 1, ascending: true}); 
    }); 

は個人的に私はこの少し変更したバージョンを使用します。 私は、次のコードを見つけました。 私の質問は次のとおりです:

  • 「昇順」はアルファベット順に並べ替えることを意味しますか?
  • 空のセルはどこにあるのですか(明らかに最後にあるはずです)?
  • 変更が発生するたびにトリガーされますか?列Aが編集されたときにのみソートするように操作できますか?

よろしくジョニー

編集:のonEditは結局状況でフィッティングではなかったので、最後に、私は私のslighlty修正版と一緒に行きました。

答えて

0

はい、昇順はアルファベット順です。このコードは、Sheet1という名前のシート内の変更と、列Aのみを検索します。関数の名前はOnEdit(AutoSortOnEditではなく)でなければなりません。

function onEdit() 
{ 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheetName= sheet.getSheetName(); 
    if(sheetName=="Sheet1"){ //sheet to run on edit 
    var editRange = sheet.getActiveRange(); 
    var editRow = editRange.getRow(); 
    var editCol = editRange.getColumn(); 
    var lr = sheet.getLastRow() 
    var range = sheet.getRange("A1:A"+lr);//apply on edit to 
    var rangeRowStart = range.getRow(); 
    var rangeRowEnd = rangeRowStart + range.getHeight()-1; 
    var rangeColStart = range.getColumn(); 
    var rangeColEnd = rangeColStart + range.getWidth()-1; 
    if (editRow >= rangeRowStart && editRow <= rangeRowEnd 
     && editCol >= rangeColStart && editCol <= rangeColEnd) 
    { 
    var range = sheet.getSheetByName(sheetName).getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());//Assumes header row 
    range.sort({column: 1, ascending: true}); 
}}} 
0

単純イベントトリガーは30秒の実行時間に制限されています。

onEdit() events(単にのonEdit命名されなければならない)、またはのonEdit(イベント)

のonEditは、とりわけそのそれをトリガーeventを表す変数を取ることができ、編集された範囲を含みます。

シートはそれ自身のsort()です。シート全体をソートしようとすると、シートを使用する方が簡単です。

function onEdit(event){ 
    if(event.range.getSheet().getName() == "Sheet1" && event.range.getColumn() == 1){//checks to see if the edited range was both on Sheet1 and column 1 (A) 
    event.range.getSheet().sort(1,true); //sort by first column 
    // event.range.getSheet().sort(1,false); //decending 
    } 
} 

複数のシートは、条件文または条件付きif文を拡張することで見ることができます。

関連する問題