Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 谷歌应用程序脚本:InsertImage()函数为';行不通_Google Apps Script_Google Sheets_Google Drive Api - Fatal编程技术网

Google apps script 谷歌应用程序脚本:InsertImage()函数为';行不通

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("画像"

我正在尝试将驱动器中的png图像粘贴到电子表格中。 很多文章都说,
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;
   }
 } 
}
这个答案怎么样

问题和解决方法: 我认为在您的情况下,可能会出现以下两种情况

  • 该文件不是图像文件
  • 图像大小可能超过最大大小。在电子表格中,当图像面积大于1048576像素^2时,会发生错误。和
  • 作为几种解决方法之一,我建议通过选择图像文件来修改图像的大小

    修改脚本: 修改脚本时,请按以下方式修改

    在使用此脚本之前,。

    发件人: 致:
    • 在这个修改后的脚本中,图像文件被选中,当图像大小超过最大限制时,大小会变小。然后,插入修改后的图像。
      • 这里,作为测试用例,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;
        }
      }
    }