首页 文章

用于将网络文件(通过Google电子表格中的链接)上传到Google Cloud 端硬盘的脚本

提问于
浏览
0

我正在尝试为Google Spreadsheet编写脚本,该脚本会将A列中链接的所有文件(仅限URL)上传到特定文件夹(该名称写在B列中) .

table example

我部分成功了 . I can upload first linked file. But I don't know how to edit this script to upload all the files. 我哪里错了?

这个脚本被发现here并由我编辑 .

function downloadFile() {
     var ss = SpreadsheetApp.getActiveSpreadsheet();
     var sheet = ss.getSheetByName("Pokus");
     var fileURLs = sheet.getRange(1, 1, sheet.getLastRow()).getValues();
     var foldernames = sheet.getRange(1, 2, sheet.getLastRow()).getValues();

     for (i = 0; i < fileURLs.length; i++) {

      var response = UrlFetchApp.fetch(fileURLs[i], {muteHttpExceptions: true});
      var rc = response.getResponseCode();

      if (rc == 200) {

        var fileBlob = response.getBlob();
        var folder = DriveApp.getFoldersByName(foldernames[i]).next();
        if (folder != null) {
          var file = folder.createFile(fileBlob);
          fileName = file.getName();
          fileSize = file.getSize();
        }
     }

      var fileInfo = { "rc":rc, "fileName":fileName, "fileSize":fileSize };
      return fileInfo;
    }

    }

我是编写脚本的初学者,我没有经验 . 有人可以帮忙吗?

1 回答

  • 2

    这个修改怎么样?

    修改点:

    • for循环中有 return fileInfo; . 所以在第一个循环中,它从函数返回 . 这样,只能上传第一个链接文件 .

    • 可以通过将 fileInfo 修改为数组来检索所有信息 .

    修改后的脚本:

    function downloadFile() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheet = ss.getSheetByName("Pokus");
      var fileURLs = sheet.getRange(1, 1, sheet.getLastRow()).getValues();
      var foldernames = sheet.getRange(1, 2, sheet.getLastRow()).getValues();
      var fileInfo = []; // Added
      for (i = 0; i < fileURLs.length; i++) {
        var response = UrlFetchApp.fetch(fileURLs[i], {muteHttpExceptions: true});
        var rc = response.getResponseCode();
        if (rc == 200) {
          var fileBlob = response.getBlob();
          var folder = DriveApp.getFoldersByName(foldernames[i]).next();
          if (folder != null) {
            var file = folder.createFile(fileBlob);
            fileName = file.getName();
            fileSize = file.getSize();
          }
        }
        fileInfo.push({ "rc":rc, "fileName":fileName, "fileSize":fileSize }); // Modified
      }
      return fileInfo; // Modified
    }
    

    注意:

    当上载文件很多时,可能会发生错误 .

    如果我误解你的问题,我很抱歉 .

相关问题