我们有一个列,其中包含从第4行开始的PDF链接(例如B4:B)。我试图找到一种方法来自动下载通过链接访问驱动器上的文件夹的PDF文件。这就是我到目前为止所做的:
function savePDFs() {
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 3; i < data.length; i++) {
Logger.log(data[i][1]);
}
}
据推测,上面的代码会在第4行(i值为3)(即B4)中写入从B列(索引值为[1])开始的链接,直到数据集的底部(例如,数据) 。长度())。
我现在对如何访问并将记录器中写入的PDF链接保存到文件夹感到困惑。
有人愿意帮助我吗?我目前不得不转到每个链接,单击“将链接另存为...”,然后导航到我要将链接的PDF保存到的文件夹。我希望使用代码修改上述过程。
更新:我发现这段代码here可能会帮助我。请注意,我将PDF链接更改为当前有效的PDF链接。
var urlOfThePdf = 'http://download.p4c.philips.com/l4b/9/929000277411_eu/929000277411_eu_pss_aenaa.pdf';// an example of online pdf file
var folderName = 'GAS';// an example of folder name
function saveInDriveFolder(){
var folder = DocsList.getFolder(folderName);// get the folder
var file = UrlFetchApp.fetch(urlOfThePdf); // get the file content as blob
folder.createFile(file);//create the file directly in the folder
}
好的,我将使用记录器中的数据来确认数据是否格式正确的PDF链接,然后我将测试这个新的代码。我觉得我已经接近了。
答案 0 :(得分:0)
您无法强制从应用脚本下载文件,您必须从HTMLService尝试,并且不确定它是否有效。
根据您的需要,我建议您创建一个专用文件夹,然后在其中添加所有PDF文件,并使用驱动器界面的下载功能将所有文件下载到一个文件夹中。
在驱动器中,文件可以放在几个文件夹中,因此pdf文件保留在原始文件夹中,但是您创建了一个新文件夹&#39; PDF供下载&#34;例如,你把它们放在里面。要从驱动器界面执行此操作,您必须在选择文件时单击&#34; shift&#34; + Z.
对于您当前的文件列表,您只需在循环中添加添加到文件夹功能。您可以使用此功能。
function addFileToFolder(id){
var folderPDF = DriveApp.getFolderById("Id OFFolder to put pdf");
var file = DriveApp.getFileById(id);
folderPDF.addFile(file);
}
编辑:功能将浏览网址列表,获取文件并在用户驱动器上的专用文件夹中进行复制。
function downloadInDriveFolder(){
var folderID = 'Id of the folder';// put id of the folder
var folder = DriveApp.getFolderById(folderID)// get the folder
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
for (var i = 3; i < data.length; i++) {
var blob = UrlFetchApp.fetch(data[i][1]).getContent();
var pdf = DriveApp.createFile(blob);
pdf.setName(data[i][0]);//Put as name of the file the value in col A
folder.addFile(pdf);
}
}
答案 1 :(得分:0)
好吧我明白了。我期待更多的代码,但这对我有用:
function listPDFs() {
var out = new Array();
var row = 3; //row index of 0 = row 1
var column = 4; // column index of 0 = column A
var sheet = SpreadsheetApp.getActiveSheet();
var data = sheet.getDataRange().getValues();
var folder = DriveApp.getFolderById("this is where you paste your folder id"); // destination folder (this is the 0978SDFSDFKJHSDF078Y98hkyo looking value when you right click your folder and select "Get Link")
for (var i=row ; i<data.length ; i++) {
if(data[i][column] !== "") {
var file = UrlFetchApp.fetch(data[i][column]);
folder.createFile(file);
}
}
return
}
如您所见,我包含了一个行和列变量,以便我可以轻松更改它们。
我还没弄清楚如何将它们组合成合并的PDF,但我确实知道我可以按日期对它们进行排序(将最顶层的项目排在第一位),然后右键单击并选择“打开方式...” .PDF Mergy“,然后将PDF移动到PDF Mergy中并按正确的顺序合并它们。您可以在Chrome App Store中找到PDF Mergy。如果我弄清楚如何从GAS自动调用PDF Mergy,我会发布它 - 但暂时上面的代码为我们节省了大量的时间......所以我把它称为足够好的时间是