google-apps-script - 如何让我的脚本只保存在 PDF 中的第一张具有一定范围的工作表。当前保存整个文件
问题描述
我目前使用的这段代码,唯一的问题是它保留了整本书......
function PDFP()
{
var file = null;
var files = DriveApp.getFilesByName(SpreadsheetApp.getActiveSpreadsheet().getName());
if ( files.hasNext() )
file = files.next();
var newFile = DriveApp.createFile(file.getAs('application/pdf'));
var values = SpreadsheetApp.getActiveSheet().getRange("F6").getValues();
var values2 = SpreadsheetApp.getActiveSheet().getRange("D11").getValues();
Logger.log(values["F6"]);
Logger.log(values2["D11"]);
newFile.setName("No." + " " + values + " " + values2);
var files = DriveApp.getRootFolder().getFiles();
while (files.hasNext()) {
var file = files.next();
var destination = DriveApp.getFolderById("1MZVNcUnoNs63_rDhCyydH8jZGLr5JjZO");
destination.addFile(file);
var pull = DriveApp.getRootFolder();
pull.removeFile(file);
Browser.msgBox("Tu documento ha sido guardado con éxito." , Browser.Buttons.OK);
}
};
解决方案
回答:
使用 Drive API,导出的电子表格包含电子表格中的所有工作表。如果您希望使用 DriveApp 导出范围,您必须先将该范围复制到新的电子表格并导出。
相关方法:
您可以使用 的 create()
方法SpreadsheetApp
创建一个新文件,然后使用getRange()
和copyTo()
方法将它们隔离以进行导出。从这里您可以使用相关的DriveApp
方法来创建您的PDF
.
示例代码:
// Create temporary Sheet and copy the range from your current Sheet:
var tempSheet = SpreadsheetApp.create('Sheet para exportar');
var rangeToExport = SpreadsheetApp.getActiveSheet().getRange("YOUR-RANGE");
// Copy previously copied range to new Sheet:
var numRows = rangeToExport.getNumRows();
var numColumns = rangeToExport.getNumColumns();
rangeToExport.copyTo(tempSheet.getRange(1, 1, numRows, numColumns))
// Create and name the new PDF:
var values = SpreadsheetApp.getActiveSheet().getRange("F6").getValues();
var values2 = SpreadsheetApp.getActiveSheet().getRange("D11").getValues();
var newFile = DriveApp.createFile(tempSheet.getAs('application/pdf'));
newFile.setName("No." + " " + values + " " + values2);
// Add the new PDF to Drive and delete the temporaryt Sheet:
DriveApp.getFolderById("YOUR-DRIVE-FOLDER-ID").addFile(newFile);
DriveApp.getRootFolder().removeFile(tempSheet);