根据条件获取云端硬盘中的最新文件URL,并将其发布到Google Spreadsheet中

问题描述 投票:1回答:1

我想知道是否有可能在驱动器文件夹中检索最新文件的URL,然后将其发布到电子表格B列的单元格中。

然后还有其他部分,只有在A列的单词为“ YES”时,才应发布URL。因此,如果A的网址为“否”,则不需要URL。

完整的方案就是这样。

  1. 图片已上传到驱动器文件夹。

  2. “是”输入到A1。

  3. 获取最新上传图片的URL,然后粘贴到B1中。
  4. 然后对所有其他行也继续。

从理论上讲,这就是我希望它起作用的方式。但是我不知道它是否可以工作。

这是我用来将图片上传到云端硬盘的脚本:

    function doGet(e) {
return message("Error: no parameters in doGet");

}

function doPost(e) {
 if (!e.parameters.filename || !e.parameters.file || !e.parameters.imageformat) {
   return message("Error: Bad parameters in doPost");
 } else {
   var imgf = e.parameters.imageformat[0].toUpperCase();
   var mime =
       (imgf == 'BMP')  ? MimeType.BMP
     : (imgf == 'GIF')  ? MimeType.GIF
     : (imgf == 'JPEG') ? MimeType.JPEG
     : (imgf == 'JPG')  ? MimeType.JPEG
     : (imgf == 'PNG')  ? MimeType.PNG
     : (imgf == 'SVG')  ? MimeType.SVG
     : false;
   if (mime) {
     var data = Utilities.base64Decode(e.parameters.file, Utilities.Charset.UTF_8);
     var blob = Utilities.newBlob(data, mime, e.parameters.filename);
     DriveApp.getFolderById('Folder Id').createFile(blob);
     return message("Success");
   } else {
     return message("Error: Bad image format");
   }
 }
}

function message(msg) {
 return ContentService.createTextOutput(JSON.stringify({Result: msg })).setMimeType(ContentService.MimeType.JSON);
}

虽然这是我用于在A列中输入“是”或“否”的脚本:

    function doGet(e) {
    var ss = SpreadsheetApp.openByUrl("Sheet_URL");
    var sheet = ss.getSheetByName("Sheet_Name");

    addRecord(e,sheet);

    }

    function doPost(e) {
    var ss = SpreadsheetApp.openByUrl("Sheet_URL");
    var sheet = ss.getSheetByName("Sheet_Name");

    addRecord(e,sheet);

    }

    function addRecord(e,sheet) {
    var HvPict = e.parameter.HvPict;

sheet.appendRow([Hv.Pict]);

}
google-apps-script google-sheets
1个回答
0
投票
  • 您要在特定文件夹中检索最新上传文件的URL。
  • 您想使用Google Apps脚本来实现。

我可以像上面那样理解。如果我的理解是正确的,那么该示例脚本如何?请认为这只是几个可能的答案之一。

[在您的情况下,我认为可以使用类文件中的getDateCreated()方法。那么下面的示例脚本呢?

示例脚本:

function getLatestFile(folderId) {
  var files = DriveApp.getFolderById(folderId).getFiles();
  var fileObj = [];
  while (files.hasNext()) {
    var file = files.next();
    fileObj.push({url: file.getUrl(), date: file.getDateCreated()});
  }
  fileObj.sort(function(a, b) {return new Date(b.date) - new Date(a.date)});
  return fileObj[0].url;
}

function myFunction() {
  var folderId = "###";
  var lastFileUrl = getLatestFile(folderId);
  Logger.log(lastFileUrl)
}
  • 运行脚本时,请设置folderId。该脚本检索folderId文件夹中的文件。
  • 运行myFunction()的功能时,将检索最新创建的文件的URL。

注意:

  • 在您的情况下,上述功能可能应在第二HTML表单的脚本中使用。
  • 如果在您的实际情况下,上载的文件已被修改,并且您想要检索最新的修改后的文件,请尝试使用getLastUpdated()而不是getDateCreated()
  • 在这种情况下,可能不需要fileObj.sort(function(a, b) {return new Date(b.date) - new Date(a.date)});

参考:

© www.soinside.com 2019 - 2024. All rights reserved.