将图像从 Google 文档保存到 Google 驱动器 - Google 应用程序脚本
Save the images from a Google Doc to Google Drive - Google App Script
我正在尝试将图像从 Google 文档下载到我的个人 Google 驱动器。
我用了 运行 一分钟,但是当我将工作代码放入循环中以捕获 all 我文档中的图像时,我遇到了一个错误。代码停止将图像保存到我的驱动器,并开始保存 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);
}
}
修改点:
- 在您的脚本中,我认为
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);
}
}
参考文献:
对于试图从 Google 文档或幻灯片下载图像的任何访问此页面的人,这是我发现的有效方法:
- 右键单击并select“保存以保留”
- 转到 Keep,您现在可以执行“将图像另存为...”
我正在尝试将图像从 Google 文档下载到我的个人 Google 驱动器。 我用了 运行 一分钟,但是当我将工作代码放入循环中以捕获 all 我文档中的图像时,我遇到了一个错误。代码停止将图像保存到我的驱动器,并开始保存 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);
}
}
修改点:
- 在您的脚本中,我认为
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);
}
}
参考文献:
对于试图从 Google 文档或幻灯片下载图像的任何访问此页面的人,这是我发现的有效方法:
- 右键单击并select“保存以保留”
- 转到 Keep,您现在可以执行“将图像另存为...”