【问题标题】:Save the images from a Google Doc to Google Drive - Google App Script将图像从 Google Doc 保存到 Google Drive - Google App Script
【发布时间】:2021-04-29 05:24:56
【问题描述】:

我正在尝试将图像从 Google Doc 下载到我的个人 Google Drive。 我启动并运行了一分钟,但是一旦我将工作代码放入一个循环中以捕获文档中的所有图像,我遇到了一个错误。该代码停止将图像保存到我的驱动器并开始保存大小为 4k 的空文件,并且绝对不是我正在寻找的 .png。我比较肯定我没有达到我的每日配额,你们中的任何人都可以理解这一点吗?

期待您的回复。

这是我的非功能性功能:

function imageExtract() {
  var documentName = "googleDoc";
  var wd = DocumentApp.openById("<GOOGLE DOC ID>");

  var imgCount = wd.getBody().getImages().length;                      // get the number of images
  
  for (var i = 0; i < imgCount; i++){
    var images = wd.getBody().getImages()[i].getAs('image/png');       // get the image blob at index 'i'
    var save = DriveApp.createFile((documentName + '-' + i), images);  // name + save the image to drive
    var imgUrl = save.getUrl();

    Logger.log('Saved Image ' + (documentName + '-' + i) + ": " + imgUrl); 
  }
}

【问题讨论】:

    标签: google-apps-script google-docs drive


    【解决方案1】:

    修改点:

    • 在您的脚本中,我认为DriveApp.createFile((documentName + '-' + i), images) 不正确。在您的情况下,images 是一个 blob。所以在这种情况下,需要使用createFile(blob)。在createFile(name, content) 的情况下,content 必须是字符串类型。我认为这就是您的问题的原因。
    • wd.getBody().getImages() 已在 for 循环之外使用。所以我认为这可以在循环中使用。
    • 当从 wd.getBody().getImages() 检索 blob 时,默认 mimeType 为 image/png

    当以上几点反映到你的脚本中时,它变成如下。

    修改后的脚本:

    function imageExtract() {
      var documentName = "googleDoc";
      var wd = DocumentApp.openById("<GOOGLE DOC ID>");
      var images = wd.getBody().getImages();
      var imgCount = images.length;
      for (var i = 0; i < imgCount; i++){
        var image = images[i].getBlob().setName(documentName + '-' + i);
        var save = DriveApp.createFile(image);
        var imgUrl = save.getUrl();
        Logger.log('Saved Image ' + (documentName + '-' + i) + ": " + imgUrl);
      }
    }
    

    参考资料:

    【讨论】:

    • 这非常成功!谢谢你,田池。我现在看到了自己的错误。
    • @NYezhov 记得在回答您的问题时接受它。您可以点击答案左侧的勾号按钮。
    【解决方案2】:

    对于任何来到此页面并尝试从 Google Docs 或 Slides 下载图片的人,我发现这是可行的:

    1. 右键单击并选择“保存到保留”

    1. 转到 Keep,您现在可以执行“将图片另存为...”

    【讨论】:

      猜你喜欢
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-03
      • 1970-01-01
      相关资源
      最近更新 更多