実現したいこと
背景
画像のようなかたちで定例会議の内容をまとめているシートがあります。
これまでは、「今週の会議が始まるときに前週の列を手動で非表示に設定」するという方法を繰り返してきました。
そのため、前週の内容だけ確認したいとき、1列ではなく膨大な量の非表示列が展開されてしまうという問題がありました。
やりたいこと
上記を解決すべく、
『一番左の列(画像でいうとC列)のみを非表示にするスクリプト』
『非表示の列のうち最後の1列のみを再表示するスクリプト』
を実装したいと考えています。
発生している問題・分からないこと
非表示スクリプトにおける問題
非表示にしたい列は必ず左から3列目になるため、列番号で指定してみました。
最初の1回は成功しましたが、非表示の列がすでに存在する場合は実行しても左から3列目が消えません。
おそらく列番号3という指定=C3セルのため表示されている列のみを数えることができていないのだと考えています。
再表示スクリプトにおける問題
行番号3、列番号3のセル番地を取得し、その一つ隣の列番号を再表示させるように書いてみました。
こちらも3,3でセルを指定するところが原因でうまくいかないのかと考えています。
該当のソースコード
GAS
1function hideColumn() { 2 // スプレッドシートを取得 3 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 4 5 // 非表示にしたい列番号を設定 6 var column = 3; 7 8 // 指定された列を非表示にする 9 sheet.hideColumns(column); 10}
GAS
1function unhideLeftNeighborColumnFromCell() { 2 // スプレッドシートを取得 3 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 4 5 // 指定したセル番地を取得 6 var cellRange = sheet.getRange(3, 3); // セル (3,3) を指定 7 var cellA1Notation = cellRange.getA1Notation(); 8 9 // 指定したセルの左隣の列番号を計算 10 var column = cellRange.getColumn(); 11 var leftNeighborColumn = column - 1; 12 13 // 左隣の列が存在する場合に非表示を解除 14 if (leftNeighborColumn > 0) { 15 sheet.showColumns(leftNeighborColumn); 16 } 17}
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
・列番号ではなくgetA1Notationでセル番地を取得するべき?
・offsetで絶対に表示されているセルからずらして取得するべき?
→非表示の列もカウントされてしまうため、表示を変更したい列の取得がスマートにできない。
初歩的な問題かもしれませんが、何卒よろしくお願いいたします。
補足
特になし

回答1件
あなたの回答
tips
プレビュー