#javascript #google-apps-script #google-sheets
Вопрос:
Я написал следующий код, который копирует сводную таблицу Google Sheets в формате HTML вместе с форматированием для отправки по электронной почте.
проблема: Функция getBackgrounds() не возвращает цвета ячеек сводной таблицы (она всегда возвращает #FFFFF). Я проверил правильность диапазона, потому что таблица отображается с правильным количеством строк и столбцов вместе со значениями данных. Однако без укладки. Кроме того, если цвет ячейки будет изменен вручную в пользовательском интерфейсе листов перед запуском скрипта, то getBackgrounds() получит этот цвет. Как я могу получить форматирование сводной таблицы?
код:
function getData(){
let ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TCD").getRange(5,1).getDataRegion();
let background = ss.getBackgrounds();
let val = ss.getDisplayValues();
let fontColor = ss.getFontColors();
let fontStyles = ss.getFontStyles();
let fontWeight = ss.getFontWeights();
let fontSize = ss.getFontSizes();
return [val,background,fontColor,fontStyles,fontWeight,fontSize];
}
function setupEmail(attachment, sendBool) {
let ss_data = getData();
let data = ss_data[0];
let background = ss_data[1];
let fontColor = ss_data[2];
let fontStyles = ss_data[3];
let fontWeight = ss_data[4];
let fontSize = ss_data[5];
html = "<table border='1' style="background-color:#000000;">";
for (let i = 0; i < data.length; i ) {
html = "<tr>"
for (let j = 0; j < data[i].length; j ) {
html = "<td style="height:20px;background-color:" background[i][j] "; color: " fontColor[i][j] "; font-style: " fontStyles[i][j] "; font-weight: " fontWeight[i][j] "; font-size: " (fontSize[i][j] 6) "px; text-align: center;">" data[i][j] "</td>";
Logger.log(background[i][j]);
}
html = "</tr>";
}
html "</table>"
РЕДАКТИРОВАТЬ: Я обошел это, жестко закодировав цвет фона. Если кто-нибудь знает, почему цвета фона сводной таблицы не могут быть возвращены, пожалуйста, внесите свой вклад.
Комментарии:
1. Я должен извиниться за свое плохое знание английского языка. К сожалению, я не могу представить вашу электронную таблицу из вашего вопроса. Итак, чтобы правильно понять ваш вопрос, не могли бы вы предоставить образец электронной таблицы? И, кроме того, можете ли вы предоставить ожидаемый результат? Этим я хотел бы попытаться понять ваш вопрос.
2. @Tanaike Не волнуйся. Я приношу свои извинения, поскольку не могу предоставить электронную таблицу из-за конфиденциальных материалов, контролируемых экспортом. Вы можете представить его в виде сводной таблицы, которая извлекает данные из листа. Затем я хочу отправить эту сводную таблицу по электронной почте. Приведенный выше код преобразует сводную таблицу в таблицу HTML, которую я включаю в качестве HTMLBody в SendEmail(). Результатом будет таблица HTML с тем же форматированием, что и сводная таблица на листах. Моя проблема в том, что .getbackgrounds() не работает с сводной таблицей, т. е. не возвращает цветовые коды ячеек сводной таблицы
3. @Tanaike Вы можете легко повторить это, создав сводную таблицу, а затем попробовав getBackgrounds() в этом диапазоне. Он не вернет цветовые коды фона, соответствующие ячейкам сводной таблицы
4. Спасибо, что ответили. Я понял о
I do apologize as i cannot provide the spreadsheet due to sensitive export controlled material.
чем . Но, к сожалению, судя по вашему ответу, я все еще не могу понять ваш вопрос. Это связано с моим плохим знанием английского языка. Я глубоко извиняюсь за это. Но я хотел бы попытаться понять это. Когда я смогу правильно понять ваш вопрос, я хотел бы подумать о решении.