我正在尝试使用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
时,即使发生错误,也可以运行脚本。
引用:
- 全部获取(请求)
- 如果。。。还
- 循环和迭代