而且,我和你也有过同样的情况.在本例中,我使用了一种变通方法.此解决方法的流程如下所示.
- 从导出的HTML数据中检索Base64数据.
- 将每个Base64数据创建为图像文件.
- 从图像文件中检索超链接.
- 用检索到的超链接替换HTML数据中的Base64数据.
当这个流反映在您的脚本中时,它将如下所示.
示例脚本1:
在此示例中,图像文件是公开共享的,并使用这些图像的webContent Links.
在测试此脚本之前,请设置为tempFolderId
.
function sendGoogleDocAsHTML1() {
var docId = "GOOGLE_DOCS_ID";
var destinatario = "xxxxxx@gmail.com";
var oggetto = "SUBJECT";
var url = "https://docs.google.com/document/d/" + docId + "/export?format=html";
var param = {
method: "get",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
muteHttpExceptions: true,
};
// --- I modified the below script.
var tempFolderId = "###"; // Please set the folder ID of the folder for putting the images.
var folder = DriveApp.getFolderById(tempFolderId);
var html = UrlFetchApp.fetch(url, param).getContentText();
[...html.matchAll(/src\="(data:image.*?)"/g)].forEach(([, e], i) => {
var [mimeType, data] = e.split(",");
var temp = folder.createFile(Utilities.newBlob(Utilities.base64Decode(data), mimeType, `image${i + 1}`));
temp.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
var url = `https://drive.google.com/uc?export=download&id=${temp.getId()}`;
html = html.replace(e, url);
});
// ---
var raw = Utilities.base64EncodeWebSafe("Subject: " + oggetto + "\r\n" +
"To: " + destinatario + "\r\n" +
"Content-Type: text/html; charset=UTF-8\r\n\r\n" +
html + "\r\n\r\n");
var message = Gmail.newMessage();
message.raw = raw;
var sentMsg = Gmail.Users.Messages.send(message, 'me');
}
示例脚本2:
在此示例中,使用了图像的缩略图链接.
在测试此脚本之前,请设置为tempFolderId
. And also, please enable Drive API at Advanced Google services. In this case, the image files are not required to be publicly shared.
function sendGoogleDocAsHTML2() {
var docId = "GOOGLE_DOCS_ID";
var destinatario = "xxxxxx@gmail.com";
var oggetto = "SUBJECT";
var url = "https://docs.google.com/document/d/" + docId + "/export?format=html";
var param = {
method: "get",
headers: { "Authorization": "Bearer " + ScriptApp.getOAuthToken() },
muteHttpExceptions: true,
};
// --- I modified the below script.
var tempFolderId = "###"; // Please set the folder ID of the folder for putting the images.
var folder = DriveApp.getFolderById(tempFolderId);
var html = UrlFetchApp.fetch(url, param).getContentText();
[...html.matchAll(/src\="(data:image.*?)"/g)].forEach(([, e], i) => {
var [mimeType, data] = e.split(",");
var temp = folder.createFile(Utilities.newBlob(Utilities.base64Decode(data), mimeType, `image${i + 1}`));
var url = Drive.Files.get(temp.getId()).thumbnailLink.replace("=s220", "=s1000");
html = html.replace(e, url);
});
// ---
var raw = Utilities.base64EncodeWebSafe("Subject: " + oggetto + "\r\n" +
"To: " + destinatario + "\r\n" +
"Content-Type: text/html; charset=UTF-8\r\n\r\n" +
html + "\r\n\r\n");
var message = Gmail.newMessage();
message.raw = raw;
var sentMsg = Gmail.Users.Messages.send(message, 'me');
}
注:
- 在此解决方法中,只有图像会替换为超链接.不幸的是,该图纸不能使用.请注意这一点.