Google apps script 谷歌应用程序脚本:InsertImage()函数为';行不通
我正在尝试将驱动器中的png图像粘贴到电子表格中。 很多文章都说,Google apps script 谷歌应用程序脚本:InsertImage()函数为';行不通,google-apps-script,google-sheets,google-drive-api,Google Apps Script,Google Sheets,Google Drive Api,我正在尝试将驱动器中的png图像粘贴到电子表格中。 很多文章都说,insertImage()on-Sheet类可以实现这一点,但是当我运行下面的代码时,我总是在调用insertImage()时遇到一个服务错误。 我在谷歌上搜索了一下,也在这里查了一下,但还没有找到解决方案。 我做错了什么 function pastePhotosFromDrive(){ var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("画像"
insertImage()
on-Sheet类可以实现这一点,但是当我运行下面的代码时,我总是在调用insertImage()时遇到一个服务错误。
我在谷歌上搜索了一下,也在这里查了一下,但还没有找到解决方案。
我做错了什么
function pastePhotosFromDrive(){
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("画像");
var folderId = "XXXXXXXXXXXXXXXXXXXXXXXXXXX";
var files = DriveApp.getFolderById(folderId).getFiles();
var row = 1;
var col = 1;
Logger.log(files);
// var file1 = files.next();
// var blob1 = file1.getBlob());
while(files.hasNext()){
var file = files.next();
var blob = file.getBlob();
sheet.insertImage(blob, col, row);
row += 3;
if(row >= 25){
col = 0;
row += 20;
}
}
}
这个答案怎么样
问题和解决方法:
我认为在您的情况下,可能会出现以下两种情况
- 在这个修改后的脚本中,图像文件被选中,当图像大小超过最大限制时,大小会变小。然后,插入修改后的图像。
- 这里,作为测试用例,500像素用于修改的宽度
while(files.hasNext()){
var file = files.next();
var blob = file.getBlob();
sheet.insertImage(blob, col, row);
row += 3;
if(row >= 25){
col = 0;
row += 20;
}
}
while(files.hasNext()){
var file = files.next();
if (file.getMimeType().indexOf("image") > -1) { // Here, the image file is selected.
var blob;
var obj = Drive.Files.get(file.getId());
var imageMetadata = obj.imageMediaMetadata;
if (imageMetadata.height * imageMetadata.width > 1048576) {
var width = 500; // Here, as a test case, 500 pixels is used for the width.
var tlink = obj.thumbnailLink.replace(/=s\d+/, "=s" + width);
blob = UrlFetchApp.fetch(tlink).getBlob();
} else {
blob = file.getBlob();
}
sheet.insertImage(blob, col, row);
row += 3;
if(row >= 25){
col = 0;
row += 20;
}
}
}