- Вы хотите скопировать диапазон данных из таблицы Google в документ Google в виде таблицы.
- Вы хотите добавить таблицу в документ Google.
- В этом случае вы не хотите включать пустые строки в нижней части листа в значения.
- В вашей ситуации вам не требуется связывать исходную электронную таблицу с таблицей документа.
- Вы хотите добиться этого с помощью скрипта Google Apps.
Я мог понять, как выше. Если мое понимание верно, как насчет этого ответа? Пожалуйста, подумайте об этом как об одном из нескольких возможных ответов.
Поток:
Поток этого примера сценария выглядит следующим образом.
- Получите диапазон данных из Google Spreadsheet.
- Извлечение значений, фона и стилей текста с использованием диапазона.
- Добавить новую таблицу в Google Document со значениями.
- Установить формат ячеек.
Пример сценария:
Из вашего сценария в вашем вопросе он Предполагается, что этот скрипт является контейнерным скриптом Google Document. Поэтому, чтобы протестировать сценарий, поместите следующий сценарий в сценарий привязанного к контейнеру документа Google, которым вы поделились.
function myFunction() {
// Get Google Sheet data
var ss = SpreadsheetApp.openById("###"); // Please set the Spreadsheet ID.
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getRange(4, 2, 1, 5).getDataRegion(SpreadsheetApp.Dimension.ROWS);
var values = range.getValues();
var backgroundColors = range.getBackgrounds();
var styles = range.getTextStyles();
// Position to paste data in Google Docs
var body = DocumentApp.getActiveDocument().getBody();
var table = body.appendTable(values);
table.setBorderWidth(0);
for (var i = 0; i < table.getNumRows(); i++) {
for (var j = 0; j < table.getRow(i).getNumCells(); j++) {
var obj = {};
obj[DocumentApp.Attribute.BACKGROUND_COLOR] = backgroundColors[i][j];
obj[DocumentApp.Attribute.FONT_SIZE] = styles[i][j].getFontSize();
if (styles[i][j].isBold()) {
obj[DocumentApp.Attribute.BOLD] = true;
}
table.getRow(i).getCell(j).setAttributes(obj);
}
}
}
Примечание:
- В этом примере сценария значения ячеек "B4: F" извлекаются из вашей общей электронной таблицы. Поэтому, если вы хотите изменить этот диапазон, измените приведенный выше скрипт.
Ссылки:
Добавлено:
Ошибка при отражении ширины столбца из электронной таблицы в документ:
Возможно отразить ширину столбца. Но когда для ширины столбца выбрано значение «Документ Google», создается впечатление, что результат отличается от результата прямого копирования и вставки таблицы, даже когда единица измерения конвертируется из электронной таблицы в документ.
В общей электронной таблице ширина столбцов от «B» до «F» составляет 21, 100, 100, 100 и 100 пикселей соответственно. Но было обнаружено, что при копировании таблицы вручную из электронной таблицы в документ ширина каждого столбца изменяется от исходного размера. Таким образом, к сожалению, когда сценарий копирует ширину столбца таблицы, результат копирования вручную не может быть реплицирован.
Пример сценария:
В следующем примере сценария ширина столбца электронной таблицы Google копируется в таблицу документа Google.
function myFunction() {
// Get Google Sheet data
var ss = SpreadsheetApp.openById("###"); // Please set the Spreadsheet ID.
var sheet = ss.getSheetByName("Sheet1");
var range = sheet.getRange(4, 2, 1, 5).getDataRegion(SpreadsheetApp.Dimension.ROWS);
var values = range.getValues();
var backgroundColors = range.getBackgrounds();
var styles = range.getTextStyles();
var colWidth = []; // Added
for (var col = 2; col <= 6; col++) { // Added
colWidth.push(sheet.getColumnWidth(col) * 3 / 4);
}
// Position to paste data in Google Docs
var body = DocumentApp.getActiveDocument().getBody();
var table = body.appendTable(values);
table.setBorderWidth(0);
colWidth.forEach(function(e, i) {table.setColumnWidth(i, e)}); // Added
for (var i = 0; i < table.getNumRows(); i++) {
for (var j = 0; j < table.getRow(i).getNumCells(); j++) {
var obj = {};
obj[DocumentApp.Attribute.BACKGROUND_COLOR] = backgroundColors[i][j];
obj[DocumentApp.Attribute.FONT_SIZE] = styles[i][j].getFontSize();
if (styles[i][j].isBold()) {
obj[DocumentApp.Attribute.BOLD] = true;
}
table.getRow(i).getCell(j).setAttributes(obj);
}
}
}
- Когда вы запустите скрипт, вы увидите, что созданная таблица отличается от таблицы, скопированной вручную. Что касается ширины столбца, на данном этапе, пожалуйста, укажите значения для ручной установки
colWidth
. Или настройте ширину столбца на стороне документа, изменив ширину столбца на стороне таблицы. Или, пожалуйста, используйте приведенный выше скрипт. Это из-за моего плохого мастерства. Я глубоко извиняюсь за это.