如何下载列中的PDF链接并保存到公用文件夹

如何下载列中的PDF链接并保存到公用文件夹,pdf,hyperlink,google-apps-script,google-sheets,google-drive-api,Pdf,Hyperlink,Google Apps Script,Google Sheets,Google Drive Api,我们有一个列,包含从第4行开始的PDF链接(例如B4:B)。我试图找到一种方法来自动下载PDF文件,这些文件可以通过驱动器上的文件夹链接访问。这就是我到目前为止所做的: function savePDFs() { var sheet = SpreadsheetApp.getActiveSheet(); var data = sheet.getDataRange().getValues(); for (var i = 3; i < data.length; i++) {

我们有一个列,包含从第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]);
  }
}

好的,我将去处理记录器中的数据,以确认数据在正确格式的PDF链接中,然后我将测试这段新代码。我感觉我快接近了。

你不能强制从应用程序脚本下载文件,你必须从HTMLService尝试,但不确定它是否能正常工作

根据您的需要,我建议您创建一个专用文件夹,并在其中添加所有pdf,然后使用驱动器界面的下载功能在一个clic中下载所有文件

在驱动器中,一个文件可以放在多个文件夹中,因此pdf文件保留在原始文件夹中,但您可以创建一个新文件夹“pdf供下载”,然后将其放入其中。要从驱动器界面执行此操作,您必须在选择文件时单击“shift”+Z

对于当前的文件列表,您只需在循环中添加“添加到文件夹”功能。您可以使用此功能

function addFileToFolder(id){
  var folderPDF = DriveApp.getFolderById("Id OFFolder to put pdf");
  var file = DriveApp.getFileById(id);
  folderPDF.addFile(file);
}
编辑:该功能将浏览url列表,获取文件并在用户驱动器上的专用文件夹中进行复制

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);
  }
}
函数下载驱动文件夹(){
var folderID='Id of the folder';//放置文件夹的Id
var folder=DriveApp.getFolderById(folderID)//获取文件夹
var sheet=SpreadsheetApp.getActiveSheet();
var data=sheet.getDataRange().getValues();
对于(变量i=3;i
我想出来了。我本来希望有更多的代码,但这对我来说已经足够了:

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   
}
函数listPDFs(){
var out=新数组();
var row=3;//0的行索引=行1
var column=4;//0的列索引=列A
var sheet=SpreadsheetApp.getActiveSheet();
var data=sheet.getDataRange().getValues();
var folder=DriveApp.getFolderById(“这是粘贴文件夹id的地方”);//目标文件夹(右键单击文件夹并选择“获取链接”时,这是0978SDFSDFKJHSDF078Y98hkyo的外观值)

对于(var i=row;iThanks St3ph;如果我读对了,这是将文件添加到文件夹的代码部分,这很有用。这是一个难题。现在我只需要了解如何将日志中包含的URL链接作为字符串和“将链接另存为…”。。。“或者以某种方式访问链接,然后使用您建议的代码将其保存为文件夹中的PDF。挠头…我更改了答案,请检查新功能。”。
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   
}