簡體   English   中英

Google Apps 腳本:InsertImage() 函數不起作用

[英]Google Apps Scripts: InsertImage() function isn't working

我正在嘗試將驅動器中的 png 圖像粘貼到電子表格中。 很多文章都說 Sheet Class 上的insertImage()可以實現這一點,但是當我運行下面的代碼時,我不斷收到調用 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;
   }
 } 
}

這個答案怎么樣?

問題和解決方法:

我認為在你的情況下,認為可能會出現以下2種情況。

  1. 該文件不是圖像文件。
  2. 圖像大小可能超過最大大小。 在電子表格中,當圖像面積大於 1,048,576 像素 ^2 時,會發生錯誤。 Ref1Ref2

作為幾種解決方法之一,我想建議通過選擇圖像文件來修改圖像的大小。

修改后的腳本:

當您的腳本被修改時,請進行如下修改。

在您使用此腳本之前, 請在 Advanced Google Services 中啟用 Drive API

從:

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;
    }
  }
}
  • 在這個修改后的腳本中,選擇圖像文件,當圖像尺寸超過最大限制時,尺寸變小。 然后,插入修改后的圖像。
    • 這里,作為測試用例,修改后的寬度使用了 500 像素。

參考:

如果我誤解了您的問題並且這不是您想要的結果,我深表歉意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM