Guys please can anyone help me with this issue I’m facing with google sheet data entry. I’ve tried to foramt the column by clipping it, but any time i send over data through n8n that has large wordings, it shows up like this, no matter what i did, it stays this way. Does anyone know how i can get this contnt just appear as a single horizontal line that i can click on and see the full content?
The reason clipping didn’t work is that your Description text actually contains line breaks. Clip only stops a single long line from wrapping, it doesn’t collapse real newline characters, so the cell keeps rendering every line and the row stays tall.
Fix it in n8n before the data reaches the sheet: in a Set or Edit Fields node, strip the newlines out of that field, something like {{ $json.Description.replaceAll(‘\n’, ’ ') }}. Once the value is one continuous line, Clip will show it as a single row you can click to expand.
Hi @darlington_onuegbu ,
You’re absolutely right that @achamm’s suggestion is a solid technical fix – I’ve used the same pattern (stripping \n before sending to Sheets) in a few workflows as well. The downside I ran into later is that it flattens the text too much: you lose the visual structure of the description, which makes longer messages harder to read and debug.
If you want to keep all the line breaks but still avoid huge row heights, I’ve had better results by handling this on the Google Sheets side with a small Apps Script: let n8n write the data as‑is, then automatically force the row height back to something like 30px every minute.
Here’s an example script that only shrinks new rows and never touches the cell content:
javascript
**const CONFIG = {
sheetName: 'Sheet1', // your sheet name
firstDataRow: 2, // first data row (after header)
targetHeight: 30, // row height in pixels
propertyKey: 'lastProcessedRow',// key to store state
};
function shrinkNewRows() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName(CONFIG.sheetName);
if (!sheet) return;
const lastRow = sheet.getLastRow();
if (lastRow < CONFIG.firstDataRow) return;
const props = PropertiesService.getScriptProperties();
const lastProcessed = Number(props.getProperty(CONFIG.propertyKey)) || (CONFIG.firstDataRow - 1);
**
// No new rows**
if (lastRow <= lastProcessed) return;
const startRow = lastProcessed + 1;
const numRows = lastRow - lastProcessed;
**
// Force the height for newly added rows**
sheet.setRowHeightsForced(startRow, numRows, CONFIG.targetHeight);
**
// Remember where we got to**
props.setProperty(CONFIG.propertyKey, String(lastRow));
}**
How to set it up:
-
In your Google Sheet, go to Extensions → Apps Script and paste the code above.
-
Change
sheetNameif needed, then save. -
In Apps Script, go to Triggers, add a new trigger:
-
Function:
shrinkNewRows -
Event source: Time‑driven
-
Type: Minutes timer → Every minute.
-
With this setup, n8n can keep sending nicely formatted multi‑line descriptions, Sheets might temporarily expand the rows, and the script will then snap all new rows back to a height of 30px without destroying the original text layout.
@darlington_onuegbu
Your text is very long, in my view that’s a characteristic of Google Sheets.
For me it works by changing the column width.
Wow! it worked. It really worked! Thank you so much for the help.
@darlington_onuegbu Glad to hear it worked for you, that’s great!
I’d be really happy if you could mark my answer as the Solution, so it can help others running into the same problem as well.
This is actually a Google Sheets display issue, not an n8n problem. Looking at your screenshot, the Description column is expanding vertically because text wrapping is enabled, which causes long content to stack across multiple lines inside the cell.
Here’s how to fix it:
Click the letter C at the top to select the entire Description column, then go to Format in the top menu, click Text wrapping, and choose Clip. This will collapse all the rows back to a single clean horizontal line. The full content is still there, clicking on any cell will show everything in the formula bar at the top.
If you want to lock the row height so it stays consistent even when new data comes in through n8n, right click any row number, select Resize rows, and set a fixed height of around 21 pixels.
To apply this across the entire sheet at once, click the small square in the very top left corner of the sheet to select everything, then apply the Clip setting. That way any future data sent through n8n will follow the same format automatically without you having to adjust it again.
Nothing needs to change in your n8n workflow the data coming through is fine, it’s purely a display setting on the Google Sheets side
