GAS如何在谷歌云端硬盘中上传多个文件



我正在尝试使用Google Apps Script将多个文件上传到Google云端硬盘。

当我想上传一个文件时,我的代码工作正常

// UPLOAD IMG IN GOOGLE DRIVE
var url = 'http://www.pngall.com/wp-content/uploads/2/1-Number-PNG-Picture.png';
var response = UrlFetchApp.fetch(url); // get api endpoint
var rc = response.getResponseCode();
if(rc=200){
var fileBlob = response.getBlob();
var folder = DriveApp.getFolderById("xxxxxx")

if(folder !=null) {
var file_img = folder.createFile(fileBlob)
var img = file_img.getUrl();
}  
}
} else {
var img = "";
} 
// APPEND VALUE TO SHEET
sheet.appendRow([img]);

我正在尝试修改上述脚本以将多个文件上传到谷歌云端硬盘,但我的代码不起作用。

这是我的(不起作用的)代码:

// UPLOAD IMG IN GOOGLE DRIVE
var url = ['http://www.pngall.com/wp-content/uploads/2/1-Number-PNG-Picture.png', 'https://www.yourcloudworks.com/wp-content/uploads/2019/09/number-digit-2-png-transparent-images-transparent-backgrounds-Number-2-PNG-images-free-download_PNG14949.png']; 
for(var i=0; i<url.length; i++){
var response = UrlFetchApp.fetchAll(url); 
var rc = response.getResponseCode();
if(rc=200){
var fileBlob = response.getBlob();
var folder = DriveApp.getFolderById("xxxxxx")

if(folder !=null) {
var file_img = folder.createFile(fileBlob[i])
var img = file_img.getUrl()[i];
}  
}
} else {
var img = "";
} 


// APPEND VALUE TO SHEET
sheet.appendRow(img[i]);
}

TypeError: response.getResponseCode 不是函数

有什么帮助吗?

修改点:

  • 在脚本中,使用for(var i=0; i<url.length; i++){}else{}。我以为你可能会误解 if 语句和 for 循环。
  • 当您想比较 if 语句中的值时,请将if(rc=200){修改为if(rc==200){
  • 来自UrlFetchApp.fetchAll(url)的响应值是一个数组。
    • 我认为错误消息的原因是这样的。
  • folder.createFile(fileBlob[i])folder.createFile(fileBlob).
  • file_img.getUrl()[i]file_img.getUrl().
  • 使用file_img.setTrashed(true)时,下载的文件将移至垃圾箱。如果您不想将它们移动到垃圾箱,请删除该行。
  • 我认为当一个请求将值放入电子表格时,流程成本会很低。在您的脚本中,我想建议使用setValues而不是appendRow.

当上述几点反映到您的脚本中时,它将变为如下。

修改后的脚本:

请复制并粘贴以下修改后的脚本。并请设置变量sheet和文件夹 ID。

function myFunction() {
// var sheet = SpreadsheetApp.getActiveSheet();
var url = ['http://www.pngall.com/wp-content/uploads/2/1-Number-PNG-Picture.png', 'https://www.yourcloudworks.com/wp-content/uploads/2019/09/number-digit-2-png-transparent-images-transparent-backgrounds-Number-2-PNG-images-free-download_PNG14949.png'];
var requests = url.map(u => ({url: u, muteHttpExceptions: true}));
var response = UrlFetchApp.fetchAll(requests);
var imgs = [];
for (var i = 0; i < response.length; i++) {
if (response[i].getResponseCode() == 200) {
var fileBlob = response[i].getBlob();
var folder = DriveApp.getFolderById("xxxxxx");
if (folder != null) {
var file_img = folder.createFile(fileBlob);
imgs.push([file_img.getUrl()]);
// file_img.setTrashed(true);  // When this script is used, the downloaded files are moved to the trashbox.
}
}
}
if (imgs.length > 0) {
sheet.getRange(sheet.getLastRow() + 1, 1, imgs.length).setValues(imgs);
}
}
  • 使用muteHttpExceptions: true时,即使发生错误,也可以运行脚本。

引用:

  • 全部获取(请求)
  • 如果。。。还
  • 循环和迭代

相关内容

最新更新