在 Google 应用程序脚本中将图像保存到文档属性

save an image to document properties in Google App Script

目前,我正在从 HTML 格式卸载图像文件,并使用以下代码将其转换为 base64:

fileImput.addEventListener("change", function() {
  if (file = this.files[0]) {    
let reader = new FileReader();
    reader.readAsDataURL(file);
     reader.onload = function() {
     var base64String = reader.result;
    }
}

我将 base64String 传递给服务器并将其保存在文档的属性中。

到此为止,一切都很完美。问题是我需要将该图像文件包含在使用 blob 格式包含图像的电子邮件中,以及 HTML 形式中,使用 base64 格式。为了更复杂,我从 Drive 获取了一些图像文件,并通过以下方式获取文件的 blob:

driveFile.getBlob();

我找不到任何方法在应用程序脚本中将 base64 转换为 blob,反之亦然。

另外,我希望能完全理解 blob 格式。如果您能给我一些好的文档,我将不胜感激。

我相信你的目标如下。

  • 您想从 driveFile.getBlob() 的 Blob 转换为 base64 数据。
  • 您想将 base64 数据转换为 driveFile.getBlob() 的 Blob。
  • 您正在使用 Google Apps 脚本。

1。从 Blob 转换为 base64。

const blob = DriveApp.getFileById("### fileId ###").getBlob();
const base64 = Utilities.base64Encode(blob.getBytes());
  • 可以使用Utilities.base64Encode().
  • 从字节数组转换Base64数据
  • 在这种情况下,base64数据没有header。所以当你想使用这个数据作为数据URL时,请像data:[<mediatype>][;base64],<data>一样添加header。 Ref

2。从 base64 转换为 Blob。

const base64 = "###";
const blob = Utilities.newBlob(Utilities.base64Decode(base64), "### mimeType ###", "### filename ###");
  • 使用Utilities.base64Decode()转换base64数据时,返回字节数组。为了将其转换为 blob,使用 Utilities.newBlob()。在这种情况下,可以包括 mimeType 和文件名。

参考文献: