Skip to content

Instantly share code, notes, and snippets.

@amoghs
Last active October 11, 2023 06:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save amoghs/caa36571093452eecab3c97b7996f115 to your computer and use it in GitHub Desktop.
Save amoghs/caa36571093452eecab3c97b7996f115 to your computer and use it in GitHub Desktop.
Add a Summary cell for each row so the eesel Oracle can understand it better
function summarizeSheet() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sheetName = sheet.getName();
var lastRow = sheet.getLastRow();
var lastColumn = sheet.getLastColumn();
var headers = sheet.getRange(1, 1, 1, lastColumn).getValues()[0];
var allRowData = sheet.getRange(2, 1, lastRow - 1, lastColumn).getValues(); // Get all row data at once
for (var row = 0; row < allRowData.length; row++) {
var rowData = allRowData[row];
var richTextRowData = sheet.getRange(row + 2, 1, 1, lastColumn).getRichTextValues()[0];
var summary = "Sheet: " + sheetName + "\n"; // Include sheet name
var links = [];
for (var column = 0; column < lastColumn; column++) {
var header = headers[column];
var value = rowData[column];
var richTextValue = richTextRowData[column];
var formattedValue = (value instanceof Date) ? Utilities.formatDate(value, Session.getScriptTimeZone(), 'MM/dd/yyyy') : value.toString();
var prefix = header + ": ";
summary += prefix + formattedValue.replace(/\n/g, " ") + "\n";
var linkUrl = richTextValue.getLinkUrl();
if (linkUrl) {
var startOffset = summary.length - formattedValue.length - 1;
var endOffset = startOffset + formattedValue.length;
links.push({startOffset: startOffset, endOffset: endOffset, linkUrl: linkUrl});
}
}
var summaryCell = sheet.getRange(row + 2, lastColumn + 1);
var summaryRichText = SpreadsheetApp.newRichTextValue().setText(summary);
links.forEach(function(link) {
summaryRichText.setLinkUrl(link.startOffset, link.endOffset, link.linkUrl);
});
summaryCell.setRichTextValue(summaryRichText.build());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment