jrad
jrad

Reputation: 292

Autosize Spreadsheet Columns

I didn't see anything in the documentation that would make me think this is a supported function. I'm writing to several sheets and visually it's difficult to see all the data without highlighting all the columns and autosizing with my mouse. I'd rather not have to do that everytime I run my script.

Is there a way to do this programmatically with app scripts? I saw the option to setColumnWidth, but how do I know how wide to set my columns when my text could vary from column to column.

==thanks for any help.

Upvotes: 7

Views: 16662

Answers (5)

App Coder
App Coder

Reputation: 71

There is now a new method called autoResizeColumn(columnPosition)

var s = SpreadsheetApp.getActive().getActiveSheet();
s.autoResizeColumn(6);

Autosizes the 6th column (a.k.a column "F").

See this stackoverflow answer https://stackoverflow.com/a/29930315/8458041


There's also a way to do multiple columns at once: autoResizeColumns(startColumn, numColumns)

var s = SpreadsheetApp.getActive().getActiveSheet();        
s.autoResizeColumns(6, 3);

Autosizes columns F, G, and H.


The corresponding autosizing method for multiple rows is autoResizeRows(startRow, numRows)

s.autoResizeRows(6, 3);

Autosizes rows 6, 7, and 8

There is no corresponding single-row autosizing method (yet?); to autosize a single row, specify 1 for the number of rows

s.autoResizeRows(6, 1);

Autosizes only row 6

Upvotes: 5

DLee
DLee

Reputation: 1

I found this to work when trying to iterate through a specified number of columns and autosizing based on the width of the text in the column:

 for (var i = 1; i < 9; i ++){ sheet.autoResizeColumn(i);}

Upvotes: 0

Trevor Iampen
Trevor Iampen

Reputation: 213

autoResizeColumn(columnPosition)

See the API for more details

Upvotes: 9

joshcody
joshcody

Reputation: 105

If you disable wrapping on the cells in your range you can achieve the desired affect.

Here's a snippet that worked for me:

var dataRange = sheet.getRange(1,1,data.length,headers.length);
dataRange.setValues(data);
dataRange.setWrap(false);

Goolge Apps Documentation: Range.setWrap

Upvotes: -1

megabyte1024
megabyte1024

Reputation: 8650

Now there is no ability to auto-size spreadsheet columns widths from a GAS. There is a topic in the issue tracker about it. Please star this topic to demonstrate Google that many people require this feature.

Upvotes: 0

Related Questions