Làm cách nào để tự động làm mới chế độ xem bộ lọc trong Google Sheets khi có dữ liệu mới thông qua Google Forms?


8

Tôi có chế độ xem bộ lọc trong Google Sheets không làm mới khi có dữ liệu mới thông qua Google Forms.

Để làm mới chế độ xem bộ lọc, tôi có thể xóa bộ lọc và áp dụng lại hoặc thậm chí chỉ cần nhấp vào "OK" trong menu bộ lọc mà không cần bất cứ điều gì. F5 và đóng / mở lại trang không hoạt động, mặc dù.

Tôi cần một cách để tự động làm mới chế độ xem bộ lọc khi có dữ liệu mới. Hoặc ít nhất là để có chế độ xem bộ lọc được làm mới khi tôi đóng và mở lại trang web thông minh phải tự chỉnh sửa cài đặt bộ lọc.

Bất kỳ ý tưởng làm thế nào tôi có thể làm điều này? Có lẽ với một Script chạy trênFormSubmit?


Có chỉnh sửa bảng tính làm mới chế độ xem được lọc không? Sau đó, tập lệnh của bạn chỉ có thể áp dụng setValue cho một số ô không sử dụng. Các tập lệnh ứng dụng (khét tiếng) không có cách nào để thao túng các chế độ xem bộ lọc ..

Thật không may, những thay đổi ngẫu nhiên trong tệp không làm cho chế độ xem bộ lọc được làm mới.
RudolfKaiser

Điều này thật đáng tiếc. Nếu hành động người dùng duy nhất làm mới chế độ xem bộ lọc chạm vào bộ lọc, thì tập lệnh sẽ không thể trợ giúp: tập lệnh không thể chạm vào bộ lọc.

Cảm ơn thông tin này! Tôi sẽ để lại câu hỏi mở trong trường hợp Google cung cấp chức năng này trong tương lai.
RudolfKaiser

Câu trả lời:


4

Google Apps Script được sử dụng để mở rộng Google Sheets, nhưng như được ghi nhận bởi @N normal Human, tại thời điểm này, nó không bao gồm các phương pháp để cập nhật / làm mới các bộ lọc Google Sheets.

https://code.google.com.vn/p/google-apps-script-issues/ là nơi dành cho các yêu cầu tính năng và cải tiến đối với các dịch vụ Google Apps Script hiện có. Mọi người có thể "nâng cấp" một yêu cầu tính năng bằng cách bắt đầu một vấn đề. Trong trường hợp này, vấn đề liên quan là:

Vấn đề 524: Tích hợp Công cụ / Bộ lọc với tập lệnh ứng dụng google


Vấn đề đó hiện được đánh dấu là đã được giải quyết, nhưng nó không trả lời trực tiếp câu hỏi. Đối với những người nghiệp dư G-sheet như tôi, sẽ rất hữu ích nếu bạn có thể đăng hướng dẫn về cách thực hiện việc này.
Elliott B

2

Hãy thử một tập lệnh kích hoạt onFormSubmit. Nhận và sau đó đặt lại các tiêu chí tương tự.

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

Chào mừng bạn Khi đề xuất sử dụng tập lệnh, tốt hơn là bao gồm một hàm hoàn chỉnh và nếu nó quá lớn, hãy bao gồm các dòng mã chính và liên kết đến khoảng trắng với mã hoàn chỉnh.
Rubén

1

Tôi đã tìm thấy một cách giải quyết tạo ra kết quả tương tự, mặc dù có thể mất thêm một chút thời gian để thiết lập.

Những gì tôi làm là tạo bảng xoay vòng dữ liệu xuất phát từ kết quả Google Forms, thao tác bảng để biểu thị dữ liệu theo cách tôi muốn và sau đó liên kết bảng xoay vòng với một trang tính mới (sử dụng = {'Tên trang tính '! A1: G100}) và định dạng trang tính cuối cùng theo cách tôi muốn.

Bằng cách này, bạn có thể lọc / thao tác dữ liệu trong bảng xoay vòng và nó sẽ được phản ánh trong bảng cuối cùng. Ngoài ra, và quan trọng nhất, nó tự động cập nhật khi có dữ liệu biểu mẫu mới.

** Lưu ý: Đảm bảo rằng phạm vi bảng xoay vòng bao gồm các ô trống trong bảng kết quả Google Form nơi dữ liệu sẽ được thêm vào; nghĩa là nếu bây giờ bạn chỉ có 50 hàng dữ liệu, nhưng bạn biết rằng vào tuần tới bạn sẽ có 1000 hàng, hãy thiết lập phạm vi của bảng trụ thành hơn 1000 hàng!


1

Đôi khi, nếu tôi cần tìm ra một chức năng trên Google Sheets, tôi bắt đầu ghi một macro, thực hiện thay đổi mà tôi muốn thực hiện và sau đó dừng ghi macro. Làm điều này, tôi phát hiện ra rằng có một chức năng làm mới.

Tôi đã viết một hàm onEdit đơn giản. Bộ lọc của tôi chỉ làm mới khi dữ liệu trên một trang cụ thể bị thay đổi vì đó là trang duy nhất ảnh hưởng đến các hàng được lọc.

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();
  }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.