我已经搜索了一些可以实现我想要的代码行,但我对谷歌应用程序脚本的工作原理并不熟悉。我只使用Microsoft excel编写代码,虽然我并没有完全丢失,但我仍然很丢失。
我正在寻找能够选择范围的代码,然后将“下载为...”选择为PDF,适合宽度,纵向,无网格。理想情况下,这个PDF可以发送到我桌面上的特定文件夹,但我不知道应用程序脚本是否支持。
我找到了所需的方法(我认为)来建立宽度,纵向,没有网格。我已经完成的所有其他搜索将整个工作表转换为PDF并通过电子邮件发送,这不是我想要做的事情,我无法找到要删除的示例代码的哪些部分,因为它看起来像PDF被识别为网络地址。任何帮助将不胜感激。
答案 0 :(得分:2)
可以从您的 Google 表格中导出范围,而无需隐藏工作表标签、行和列,或创建临时的新电子表格。
function exportRangeToPDf(range) {
var blob,exportUrl,options,pdfFile,response,sheetTabNameToGet,sheetTabId,ss,ssID,url_base;
range = range ? range : "C4:D4";//Set the default to whatever you want
sheetTabNameToGet = "Sheet1";//Replace the name with the sheet tab name for your situation
ss = SpreadsheetApp.getActiveSpreadsheet();//This assumes that the Apps Script project is bound to a G-Sheet
ssID = ss.getId();
sh = ss.getSheetByName(sheetTabNameToGet);
sheetTabId = sh.getSheetId();
url_base = ss.getUrl().replace(/edit$/,'');
//Logger.log('url_base: ' + url_base)
exportUrl = url_base + 'export?exportFormat=pdf&format=pdf' +
'&gid=' + sheetTabId + '&id=' + ssID +
'&range=' + range +
//'&range=NamedRange +
'&size=A4' + // paper size
'&portrait=true' + // orientation, false for landscape
'&fitw=true' + // fit to width, false for actual size
'&sheetnames=true&printtitle=false&pagenumbers=true' + //hide optional headers and footers
'&gridlines=false' + // hide gridlines
'&fzr=false'; // do not repeat row headers (frozen rows) on each page
//Logger.log('exportUrl: ' + exportUrl)
options = {
headers: {
'Authorization': 'Bearer ' + ScriptApp.getOAuthToken(),
}
}
options.muteHttpExceptions = true;//Make sure this is always set
response = UrlFetchApp.fetch(exportUrl, options);
//Logger.log(response.getResponseCode())
if (response.getResponseCode() !== 200) {
console.log("Error exporting Sheet to PDF! Response Code: " + response.getResponseCode());
return;
}
blob = response.getBlob();
blob.setName('AAA_test.pdf')
pdfFile = DriveApp.createFile(blob);//Create the PDF file
//Logger.log('pdfFile ID: ' +pdfFile.getId())
}
已使用多种策略将 Google 表格的一部分导出为 PDF。
我会使用在下载 URL 中包含的范围构建下载 URL 的方法。
答案 1 :(得分:1)
似乎没有直接的方法可以在Google Apps脚本中将范围转换为PDF(blob)。您可以做的最好的事情是将范围值复制到空白电子表格,应用格式,然后导出该表格。
您可以将PDF写入Google云端硬盘中的文件夹,然后使用计算机上的云端硬盘软件将该文件夹同步到桌面上的文件夹,完成最后一部分。
我没有一段代码可以做到这一点,但这里有相关的文档链接:
https://developers.google.com/apps-script/reference/spreadsheet/range#getvalues
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#create(String)
https://developers.google.com/apps-script/reference/spreadsheet/range#setValues(Object)
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet#getAs(String)
https://developers.google.com/apps-script/reference/drive/drive-app#createFile(String,String,String)