セルの幅を内容に合わせて変更する | autoResizeRows()/autoResizeColumns()【GAS】

たけだ

GASを使ってセルの幅を内容に合わせて変更する方法をご紹介します

💡この記事でわかること
  • autoResizeRows/autoResizeColumns関数を使ってセルの幅を変更する方法
  • autoResizeColumns関数を使うときの注意点

autoResizeRows/autoResizeColumns関数

行の高さを調整する autoResizeRows(startRow, numRows)

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
// 2行目から3行分、セルの高さを調整する
sheet.autoResizeRows(2, 3)

実行前

実行後

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/sheet#autoresizerowsstartrow,-numrows

引数

名前説明
startRowIntegerサイズ変更を開始する行の番号
numRowsIntegerサイズ変更の対象とする行数

戻り値

Sheetオブジェクト

列の幅を調整する autoResizeColumns(startColumn, numColumns)

const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
// 1列目から2列分、セルの幅を調整する
sheet.autoResizeColumns(1, 2)

実行前

実行後

公式ドキュメント

https://developers.google.com/apps-script/reference/spreadsheet/sheet#autoresizecolumnsstartcolumn,-numcolumns

引数

名前説明
startColumnIntegerサイズ変更を開始する列の番号
numColumnsIntegerサイズ変更の対象とする列数

戻り値

Sheetオブジェクト

autoResizeColumnsを使うときの注意点

たけだ

autoResizeColumnsには執筆時点では、セルに日本語など全角文字が含まれる場合、正しく幅が調整されない問題があります

意図しない結果になるパターン

次のような場合、B列の右あたりまでA列の幅を広がるというのがautoResizeColumns実行後の期待する結果だと思います。

実行前

では、実行後を見てみましょう。

実行後

幅が広がることなく、むしろ少し縮まっているように見えます。

このようにautoResizeColumnsには、日本語など全角文字が含まれる場合、正しく幅が調整されない問題があります

ぴよこ

普通に使っていれば全角文字は含まれないことはないので、この仕様は厳しい!

この挙動は現在多くのユーザから課題として挙げられており、修正すべきバグとして認識されているようです。しかしながら修正・対応までは長い時間がかかることもあるため、しばらくは全角文字が含まれる場合の挙動に気を付けながら使うことになりそうです。

代替案

GASではないのですが、列を選択してダブルクリック列の幅を一括で調整することができます。スプレッドシートでの効率的な操作例として覚えておくと便利です。

まとめ

たけだ

以上、GASを使ってセルの幅を内容に合わせて変更する方法でした。

最後まで読んでいただきありがとうございました!

GASをイチから学びたい方へ

このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。

すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。