Решение
Чтобы иметь возможность экспортировать диапазон спецификаций c в PDF, так как в скрипте Apps нет специального инструмента c, для этого вам потребуется выполнить обходной путь.
Следующий обходной путь автоматически скопирует диапазон, который мы хотим экспортировать, в новую пустую электронную таблицу, чтобы затем иметь возможность экспортировать только точный диапазон .
Почему нам нужна новая электронная таблица?
Хорошо для экспорта диапазона и не мешать все пустые ячейки нам нужно будет скрыть все несоответствующие строки и столбцы . Для этого проще всего вставить нужный диапазон в первую ячейку (A1
) нашего листа.
Более того, по умолчанию это экспортирует все листы электронной таблицы , поэтому мы можем разместить лист этого нового диапазона только в первой ячейке, чтобы избежать попадания других данных между ними. Чтобы избежать удаления исходного листа , лучший способ добиться этого - создать новую электронную таблицу, а после завершения процесса удалить ее.
Вот сценарий, решающий эту проблему. Это объясняется комментариями:
function myFunction() {
// Get the range of cells you want to export
var rangeValues = SpreadsheetApp.getActive().getSheetByName('Sheet1').getRange('D10:F13').getValues();
// Get the Drive folder you want to store your PDF to. Otherwise use root folder (if you dont mind about this)
var folder = DriveApp.getFolderById('FOLDERID');
// Create a blank spreadsheet to be able to export just the range
var destSpreadsheet = SpreadsheetApp.create('PDF');
// Check first if the sheet you are going to create exists. Otherwsie create it and copy paste the range
// we want to export as PDF in the first values of the sheet. I.e if our range is 5 rows and 6 columns we want
// it to be copied from A1 to F5 for example. Then we can hide the rest of columns and rows and export
// what we have left
var sheet2 = destSpreadsheet.getSheetByName('sheet2');
if(!sheet2){
destSpreadsheet.insertSheet('sheet2').getRange('A1:C4').setValues(rangeValues);
var sheet2 = destSpreadsheet.getSheetByName('sheet2');
}
// Hide all the rows and columns that do not have content
sheet2.hideRows(sheet2.getLastRow()+1, sheet2.getMaxRows()-sheet2.getLastRow());
sheet2.hideColumns(sheet2.getLastColumn()+1, sheet2.getMaxColumns()-sheet2.getLastColumn());
// Delete the first sheet that is automatically created when you create a new spreadsheet
destSpreadsheet.deleteSheet(destSpreadsheet.getSheetByName('Sheet1'));
// Export our new spreadsheet to PDF
var theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName('pdf');
var newFile = folder.createFile(theBlob);
//Delete the spreadsheet we created to export this range.
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}
Надеюсь, это помогло вам. Дайте мне знать, если вам нужно что-то еще или вы что-то не поняли. :)