我在使用Drive.Files.update()
来覆盖/更新驱动器中的工作表中的一系列PNG文件时遇到麻烦。不断返回Response code: 404. Message: Not Found. (line 27, file "SaveCharts")
任何人都可以向我指出我在做什么错吗?我需要指定一个文件夹吗?
谢谢...尼克
function saveChartstoGdrive(){
//Getting chart from the current spreadsheet
var targetspreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = targetspreadsheet.getSheetByName('Sales Graph');
var charts = sheet.getCharts();
var chartBlobs=new Array(charts.length);
var filePrefix="scrlxz";
//loop through charts saving each to gdrive
for(var i=0;i<charts.length;i++){
//build each chart
var builderChart = charts[i].modify();
builderChart.setOption('width', 1400);
builderChart.setOption('height', 900);
var newChart =builderChart.build();
chartBlobs[i]= newChart.getAs('image/png');
//make sure we have the correct file and prepare for saving
var fileName = filePrefix+[i]+".png";
var fileId = DriveApp.searchFiles(title = fileName);
//var fileId = DriveApp.searchFiles(name = fileName);
// var fileTyper = {title: fileName, mimeType: 'image/png'};
var contentBlob = chartBlobs[i];
//save file to ggdrive
var myVar = Drive.Files.update({mimeType: 'image/png'}, fileId, contentBlob);
// other ideas i've tried
// var myVar = Drive.Files.update(fileTyper, fileId, contentBlob);
// updateFileContent(fileId, contentBlob, function(response) {console.log(response);})
// var myVar = Drive.Files.update(fileId, contentBlob);
}
}
答案 0 :(得分:0)
此修改如何?
DriveApp.searchFiles(title = fileName)
,在此脚本中,不会发生任何错误。但是,当它尝试使用next()
检索值时,会发生错误。并且title = fileName
不用作搜索查询。DriveApp.searchFiles(title = fileName)
检索的值是FileIterator。通过以上几点,可以认为发生了这种错误。为了消除此错误,请进行以下修改。
来自:var fileId = DriveApp.searchFiles(title = fileName);
至 :
var fileId = DriveApp.searchFiles("title='" + fileName + "'").next().getId();
或
您还可以通过getFilesByName()
使用fileName
。
var fileId = DriveApp.getFilesByName(fileName).next().getId();
在此修改中,它假设以下几点。
fielName
为var fileName = filePrefix+[i]+".png"
的文件在您的Google云端硬盘中只有一个。searchFiles()
和getFilesByName()
检索文件时,如果Google云端硬盘中有多个文件名相同的文件,则需要准备脚本以进行处理。所以起初,我问过带有文件名的文件数。如果我误解了你的情况,对不起。