@egablo

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

スプレッドシート 昇順で行が増えても繰り下がらない

私は、googleフォームで受け取った情報をスプレッドシートで管理しています。
シートAでは、googleフォームの回答をquery関数を使って日付の昇順で表示しています。シートAの一番右の列は関数が入っておらず、回答の情報をもとに手動で入力することで運用しています。

・実現したいこと
googleフォームで新規回答を受け取った際に、シートAの以前までの情報が1行ずつ繰り下がり、新しい情報が1番上に表示されるようにしたいです。

・現状
繰り下がるのはquery関数を使っている列だけで、手入力の列は連動してくれません。

エクセルやスプレッドシートに関しては素人です。必死に関連のありそうな単語で検索しましたが解決できませんでした。かなり基礎的なことかもしれませんが、よろしくお願いします。

0 likes

2Answer

案だけですが参考までに。

  1. 手入力の追加情報を、フォーム記録のスプレッドシートに入れる
  2. さらにソート用の別シートを作る
  3. google apps scriptでフォーム送信時またはスプレッド記録時をトリガーにして実行する

過去の経験から1の案おすすめですね。
他はどんどん泥沼になっていく可能性もあるので、情報ソースは一本にまとめたいです。

0Like

Comments

  1. @egablo

    Questioner

    ありがとうございます。3以外は思いつかなかったので参考になりました。
    ただ、使い勝手の良さや作業コストを考慮して日付での昇順は諦めようと思います。
    稚拙な質問にお力を貸していただき、ありがとうございました。

Googleスプレッドシートを触り始めたばかりなので、間違っているかもしれません。あくまでヒント程度ということで...

QUERY関数の結果は読取専用で、入力のための並び替えには使えないので、元データ自体を並び替えする必要があると思います。

手元で試してみたところ、フォームの回答データに任意の列やフィルタを追加し、保持することはできるようです。
タイムスタンプの列がAとして、フィルタでA列を降順にソートする操作をマクロで記録すると、下記のようになりました。

/** @OnlyCurrentDoc */

function Sort() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A1').activate();
  spreadsheet.getActiveSheet().getFilter().sort(1, false);
};

あとは、このスクリプトを新規回答があったとき、あるいは定期的に実行する方法を考えることで、目的のことができるのではないでしょうか。

0Like

Comments

  1. @egablo

    Questioner

    ご回答いただきありがあとうございます。
    やはり、フォームの回答データに直接打ち込むしかないようですね。
    使い勝手の良さや作業コストを考慮して、日付での昇順は諦めようと思います。
    稚拙な質問にお力を貸していただき、ありがとうございました。
  2. 単純に、フォーム回答データの最後(最新)の行にすばやくアクセスしたいということであれば、Ctrl+↓, Ctrl+→ とショートカットキーを使うことでもできると思いますので、併せてご検討ください。

Your answer might help someone💌