2016-04-29 2 views
0

フォームを提出すると自動的にソートするGoogleシートを取得しようとしています。私は次のように並べ替えるためのスクリプトを設定することができましたが、スプレッドシートを手動で編集するときにのみ機能します(新しいデータがフォームから入力されたときではありません)。フォームを送信するたびにトリガーを使用してシートをソートする

function onEdit(event){ 
    var sheet = event.source.getActiveSheet(); 
    var editedCell = sheet.getActiveCell(); 

    var columnToSortBy = 6; 
    var tableRange = "A2:F100"; 

    if(editedCell.getColumn() == columnToSortBy){ 
    var tableRange = "A2:F100"; 

if(editedCell.getColumn() == columnToSortBy){ 
var range = sheet.getRange(tableRange); 
    range.sort({ column : columnToSortBy }); 
    } 
} 

フォームを送信するときにこれを行うには、トリガーを設定する必要があります。私はGoogleの開発者にこれを見つけたが、私は次のように(「MyFunctionを」)として使用するかわからないんだけど:

var sheet = SpreadsheetApp.getActive(); 
ScriptApp.newTrigger("myFunction") 
.forSpreadsheet(sheet) 
.onFormSubmit() 
.create(); 

答えて

2

フォームの提出はそれほどのonEditトリガがここに無用である、編集ではありません。代わりに、フォーム送信時にインストール可能なトリガーで次の単純な関数を使用します。これは、手動でトリガを設定するのは簡単です:、スクリプトエディタにリソース>現在のプロジェクトのトリガに行き、そして追加この:

trigger

機能:

function sortSheet() { 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var columnToSortBy = 6; 
    var headers = 1; // number of header rows, usually 1 
    var range = sheet.getRange(headers + 1, 1, sheet.getLastRow() - headers, sheet.getLastColumn()); 
    range.sort({ column : columnToSortBy }); 
} 
+1

これはどのようなOPよりも優れています頼んでいた文字通りそうするために、 'myFunction'を' onEdit'に置き換えることができるので、フォーム提出物*は 'onEdit'を模倣します。 – Jonathon

+0

ありがとうございます。これでうまくいきましたが、ヘッダー行も同様にソートされています。私はどうすればそれが起こらないように書くことができますか? –

+0

@ Ms.Browne Edited –

関連する問題