Googleフォームで入力があるたびにGoogleスプレッドシートの内容をタイムスタンプの降順に並べ替える

Print Friendly, PDF & Email

Googleフォームで入力があるたびにGoogleスプレッドシートの内容をタイムスタンプの降順に並べ替える処理を書いてみました。

というのも、入力内容が溜まってくると最新の情報を見るために一番下までスクロールする必要があったからです。

ポイントは、範囲指定の方法と並べ替えの基準となる列の指定です。

以下のようなソースコードにしました。

function sortByTimeStamp(){
    var sheet = SpreadsheetApp.getActiveSpreadsheet();
    var activeSheet = sheet.getActiveSheet();

    var lastRow = sheet.getLastRow();

    var range = "A2" + ":L" + lastRow;

    var range = activeSheet.getRange(range);
    range.sort([{column: 1, ascending: false}]);
}

 

並べ替えの範囲は以下のように指定しました。

"A2" + ":L" + lastRow;

範囲指定の左上はA2セルからとしました。

なぜなら、Googleフォームで入力したGoogleスプレッドシートの1行目は項目名(フォームの質問内容)が入るからです。

また、列数は今回L列までと直接記述しました。

あえて、sheet.getLastColumnメソッドは使いませんでした。

なぜなら、M列には常時表示しておきたい注意事項が書いてあったからです。

<並べ替え後のイメージ図>

  A B C (中略) L M
1 20xx/05/04 8:13:50 入力データ 入力データ 入力データ ※注意事項が書いてある
2 20xx/05/03 8:22:30 入力データ 入力データ 入力データ  
3 20xx/05/01 21:09:17 入力データ 入力データ 入力データ  
4 20xx/04/30 23:30:42 入力データ 入力データ 入力データ  
5 (以下省略)

 

入力があるたびに増える行数は

sheet.getLastRow();

で取得しました。

 

並べ替えの基準となる列は、Googleフォームで入力したGoogleスプレッドシートのA列に入っているため

column: 1

と指定しました。

また、降順に並べ替えるため、

ascending: false

と指定しました。

関数名は、「sortByTimeStamp」としました。

 

あとは、トリガーの設定をしてフォームに入力があるたびに並べ替えが行われるようにします。

以下の設定で大丈夫でした。

 

実行する関数を選択:sortByTimeStamp

 

この記事を見つけていただいた方の参考になりましたら幸いです。

セイ・コンサルティング・グループのお問い合わせ