質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

10096閲覧

Google formの回答でスプレッドシートに行が追加された際に降順で並び替えしたい

MON5277

総合スコア22

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2017/03/02 00:09

編集2017/03/02 00:23

並び替えの動作は以下のスクリプトで動作することを確認できています。
このスクリプトを自動で動作させるタイミングを入れたいのですがどのようにしたらよいでしょうか?

実行タイミングは
1)google form からの回答が入り、スプレッドシートに集計される
2)この時にスプレッドシート内に行が追加されると思うので、そのタイミングで以下のスクリプトを実行したい

Google

1function sort(){ 2 var ss = SpreadsheetApp.getActiveSpreadsheet(); 3 var sh = ss.getActiveSheet(); 4 var range = sh.getRange("A2:G"); 5 range.sort([{column: 1, ascending: false}]); //列1(A)を基準に 降順で並び替え 6}

皆様のお力を貸していただけますと幸いです。
宜しくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Event Objects
Edit イベントで取得できると思います。

追記

フォームからの送信では Edit イベントは起こりませんでした。
したがって、上記方法ではできません。

代わりに次のようにしてください。

  1. プロジェクトを開く
  2. メニューから [リソース]→[現在のプロジェクトのトリガー]
  3. 新しいトリガーを追加
  4. 「実行」を「sort」、「イベント」を「スプレッドシートから」、「フォーム送信時」

これで保存してください。
フォームからの送信で動くことを確認しました。

投稿2017/03/02 01:59

編集2017/03/02 10:14
Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MON5277

2017/03/02 02:39

ありがとうございます。 Editを調べてみました。そこで function onEdit(event) { var ss = event.source.getActiveSheet(); //編集したシート var r = event.source.getActiveRange(); //編集したセル sort(); } を追加してみたのですが、 エラーメッセージとして TypeError: undefined からプロパティ「source」を読み取れません。(行 10、ファイル「コード」) と跳ね返されてしまいます。 プログラムの初歩的なところを理解していないので何か見当違いの事をしているのかもしれないのですが、少しヒントをいただけないでしょうか?
Zuishin

2017/03/02 06:37

どうやってスプレッドシートとイベントハンドラを関連付けましたか?
MON5277

2017/03/02 07:15

すみません。現時点でいただいたヒントの意味が理解できません。。。
Zuishin

2017/03/02 07:52

ここまでの手順を教えて下さい。まずは該当するスプレッドシートを開きます。そこからどのようにされましたか?
MON5277

2017/03/02 08:48 編集

1.ツール>スクリプトエディタ でエディタを開く 2.function sort(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); var range = sh.getRange("A2:G"); range.sort([{column: 1, ascending: false}]); //列1(A)を基準に 降順で並び替え } を記入 3.function onEdit(event) { var ss = event.source.getActiveSheet(); //編集したシート var r = event.source.getActiveRange(); //編集したセル sort(); } を追記。保存。 たぶんこのコードが自分が思った動作をする内容の物に書けていないのだと思っています。 他に、 リソース>現在プロジェクトのトリガー>新規追加>実行:sort /イベント:時間主導型 分タイマー 1分 にしてみたら、確かに1分ごとに動作してくれています。 これを 実行:sort / スプレッドシート 編集時 としたときには、formからスプレッドシートへの書き込みがあってもこれを「編集」と捉えてくれないのか、sortしてくれません。
MON5277

2017/03/02 08:39

どちらにしても追記部分の 3.function onEdit(event) { var ss = event.source.getActiveSheet(); //編集したシート var r = event.source.getActiveRange(); //編集したセル sort(); } は全く何も動作していないと思います。
MON5277

2017/03/02 08:47 編集

実行:sort / スプレッドシート 編集時 としたときですが、手動でスプレッドシートを開いて少しでも何か編集したタイミングで、並び変わってくれます。 formからのスプレッドシートへの記入はシートの編集とはみなされないのでしょうか?
Zuishin

2017/03/02 10:13

イベントは起動しませんでしたね。早とちりでした。 回答を編集しましたので、ご覧ください。
MON5277

2017/03/02 10:25

おお!出来ました。わざわざ試して下さったんですね。ありがとうございました。 フォーム送信時がそっちにあったんですね。気付きませんでした。 もともと作ってたトリガーをフォーム送信時に変更しても動作しなくて、一度削除してから作り直したらうまく動くようになりました。 今回の件で少しGASへの入り口が見えたような気がします。 何度も回答いただきましてありがとうございました。 別件でもご回答いただきましてありがとうございます。 引き続きどうぞよろしくお願いいたします。
退会済みユーザー

退会済みユーザー

2020/05/10 09:59

こちらの方法を参考にして私もグーグルフォームの回答をスプレッドシートに入力する際に降順に入力されるようにしたいと考えたのですがどうしてもうまく反映されません。私はB列を基準に降順にしたいのですが、その場合はどのように手を加えればよいでしょうか。ご回答よろしくお願いします。
Zuishin

2020/05/10 10:06 編集

https://teratail.com/questions/260310 ですね? 「うまく動作しませんでした」ではわからないので、質問を編集して「どのような手順をとったところどのように動作したのか」を書いてください。 まったく何も起こらなかったのなら、sort を呼んでいないのかもしれません。どこでどのように sort を呼んでいるのかも含めて書いてください。 繰り返しますが、ここではなく、自分の質問を編集してください。そうすれば私の他の回答者の目にもついて解決が早くなります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問