Googleフォーム経由で新しいデータを受け取ったときに、Googleスプレッドシートのフィルタービューを自動的に更新する方法


8

Googleスプレッドシートにフィルタービューがあり、新しいデータがGoogleフォーム経由で受信されたときに更新されません。

フィルタービューを更新するには、フィルターを削除して再度適用するか、何も変更せずにフィルターメニューの[OK]をクリックします。ただし、F5キーを押してページを閉じたり再度開いたりしても機能しません。

新しいデータが入ったときにフィルタービューを自動的に更新する方法が必要です。少なくとも、フィルター設定を手動でいじる必要なしに、Webサイトを閉じて再度開いたときにフィルタービューを更新する必要があります。

どうすればこれを行うことができますか?多分onFormSubmitを起動するスクリプトを使用しますか?


スプレッドシートを編集すると、フィルターされたビューが更新されますか?次に、スクリプトはsetValueを未使用のセルに適用するだけです。アプリスクリプト(悪名高い)フィルタビューを操作する方法を持っていない...

残念ながら、ファイルをランダムに変更しても、フィルタービューは更新されません。
RudolfKaiser、2015

これは確かに残念です。フィルタービューを更新する唯一のユーザーアクションがフィルターに触れることである場合、スクリプトは役に立ちません。スクリプトはフィルターに触れることができません。

この情報をありがとう!Googleが将来この機能を提供する場合に備えて、質問は開いたままにしておきます。
RudolfKaiser、2015

回答:


4

Google Apps ScriptはGoogleスプレッドシートの拡張に使用されますが、@ Normal Humanによって指摘されているように、現時点では、Googleスプレッドシートフィルターを更新/更新するメソッドは含まれていません。

https://code.google.com/p/google-apps-script-issues/は、既存のGoogle Apps Scriptサービスの機能リクエストや機能強化のための場所です。人々は、問題にスターを付けることで機能リクエストを「賛成」できます。この場合、関連する問題は次のとおりです。

問題524:ツール/フィルターとGoogleアプリスクリプトの統合


この問題は解決済みとしてマークされましたが、質問には直接回答していません。私のようなGシートのアマチュアの場合、これを行う方法の手順を投稿できれば非常に役立ちます。
Elliott B

2

onFormSubmitを起動するスクリプトを試してください。同じ基準を取得してから再設定します。

  var sheet = SpreadsheetApp.getActiveSheet();
  var filter = sheet.getFilter();
  if (filter) {
    var criteria = filter.getColumnFilterCriteria(4);
    if (criteria) {
      filter.setColumnFilterCriteria(4, criteria)
    }

ようこそ。スクリプトの使用を提案するときは、完全な関数を含めることをお勧めします。これが大きすぎる場合は、メインのコード行と完全なコードのスペースへのリンクを含めます。
ルベン

1

同じ結果になる回避策を見つけましたが、設定に少し時間がかかる場合があります。

私が行うことは、Googleフォームの結果から取得したデータのピボットテーブルを作成し、テーブルを操作してデータを希望どおりに表し、ピボットテーブルを新しいシートにリンクします(= {'Sheet Name '!A1:G100})、その最終的なシートを希望どおりにフォーマットします。

このようにして、ピボットテーブルのデータをフィルタリング/操作すると、最終的なシートに反映されます。また、最も重要なこととして、新しいフォームデータが入力されると自動的に更新されます。

**注:ピボットテーブルの範囲には、データが追加されるGoogleフォームの結果シートの空のセルが含まれていることを確認してください。現在50行のデータしかないが、来週までに1000行になることがわかっている場合は、ピボットテーブルの範囲を1000行以上に設定してください。


1

Googleスプレッドシートの機能を理解する必要がある場合は、マクロの記録を開始し、必要な変更を加えてから、マクロの記録を停止します。そうしてみると、リフレッシュ機能があることがわかりました。

簡単なonEdit関数を書きました。特定のページのデータが変更された場合にのみフィルターが更新されます。これは、フィルターされた行に影響を与えるのがそのページだけだからです。

function onEdit(e){

  // Set a comment on the edited cell to indicate when it was changed.

  var range = e.range;
  var sheet = range.getSheet();

  if (sheet.getSheetName() === "CNST Cost Estimator")
  {
    UpdateFilter();
  }
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.