0

L列(12番目)に「いいえ」を含むすべての行を非表示にしようとしています。ドキュメントを開くたびに、このスクリプトが機能するようにしています。コードは次のとおりです。

function onOpen(e){
  var sheet = e.source.getActiveSheet();
  var r = sheet.getActiveRange();
  if (r.getColumnIndex() == 12 && r.getValue() == "no") {
    sheet.hideRows(r.getRowIndex(),1);
}
}

残念ながら、スクリプトは機能しません。誰かが私に問題を説明してもらえますか?

重要な注意点!列 L のすべての値は、ImportRange 関数を介して別のシートからインポートされます。問題ないかな…

4

1 に答える 1

1

シートを初めて開いたとき、onOpen トリガーに配信されるイベントには有効なアクティブ範囲がありません。r.getColumnIndex()アクティブな範囲は A1 であるため、値は常に 1 です。(ユーザーがどのセルにいるかを報告しており、移動する機会がありませんでした。)

関数を変更して、必要なことを行う方法を次に示します。複数シートのスプレッドシートの最初のシートでのみ機能することに注意してください。

function onOpen(e){
  var sheet = e.source.getActiveSheet();
  var values = sheet.getDataValues();
  // Check all rows except the first header row.
  for (var row = values.length-1; row > 0; row--) {
    // Check if the twelfth column contains "no"
    // Since arrays start at 0 but spreadsheet rows & columns
    // start at 1, we need to adjust by 1.
    if (values[row].length >= (12-1) && values[row][12-1] == "no") {
      // The data in column 12 of this row contains "no", so hide it.
      sheet.hideRows(row+1,1);
    }
  }
}
于 2013-06-14T01:52:51.950 に答える