首页 > 解决方案 > 如何让我的脚本只保存在 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);
}

};

标签: google-apps-script

解决方案


回答:

使用 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);

参考:


推荐阅读