[GoogleAppsScript] 스프레드시트 필터를 열 때마다 업데이트 [GAS]

스프레드시트 필터가 업데이트되지 않습니다!



스프레드 시트 필터를 사용할 때 TODAY()와 같은 날짜 함수로 필터링하거나 GAS (GoogleAppsScript)가 뒷면에서 테이블의 데이터를 변경하면 필터가 최신 상태로 업데이트되지 않고 오래된 데이터가 남습니다. 버립니다.



예를 들어 이달 이후의 데이터로 필터링하더라도



다음달이 되면...



업데이트되지 않았습니다!

다시 필터의 OK버튼을 누르면 갱신됩니다만, 매우 번거롭고 매회 그런 일을 하고 있을 만큼 여가가 아니고, OK버튼을 누를 때마다 「어째서 이런 일하고 있을까… 」라고 후회 그냥 밀려요.

GAS에서 열 때마다 필터를 업데이트하면 해결!



그래서 GAS입니다.
스프레드시트가 열릴 때 필터의 OK 버튼을 누르는 것과 같은 일을 해주면 해결합니다.

main.js
// onOpenでスプレッドシートが開かれる度に実行
function onOpen() {
  // すべてのシートを取得
  const sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  for (const sheet of sheets) {
    // フィルタ取得
    const filter = sheet.getFilter();
    if (!filter) {
      continue;
    }
    // フィルタを同じ内容で更新
    const col = filter.getRange().getColumn();
    const criteria = filter.getColumnFilterCriteria(col);
    filter.setColumnFilterCriteria(col, criteria); 
  }
}

하고 있는 것은 지극히 단순하고, getFilter() 로 필터를 취득해, 정확히 같은 내용으로 재설정해 줍니다.
필터의 내용을 취득하거나 설정하거나 하려면 columnPosition(列) 를 지정해 주지 않으면 안되므로, getRange().getColumn() 로 열을 취득하고 있습니다.
onOpen 에서 실행하고 있기 때문에 시트를 열어 놓으면 업데이트되지 않지만 필터의 OK 버튼 때와는 달리 맑은 기분으로 F5를 누를 수 있습니다.

좋은 웹페이지 즐겨찾기