google-apps-script - 有没有办法使用 Google 应用程序脚本查看网站网络请求的名称?
问题描述
所以这就是我想要做的:
有一个名为 Torah Anytime ( https://www.torahanytime.com/ ) 的网站发布音频文件(我想你可以称它们为播客,该网站将它们称为 shiurim,shiur 是希伯来语的歌曲,或者在这种情况下,音频)每天。我想创建一个脚本来下载特定扬声器的音频,然后将这些文件通过电子邮件发送给我。我实现这一点的方法是使用 Google Apps Scripts。Torah Anytime 允许您关注特定的演讲者,并在您关注的演讲者发布新播客时收到电子邮件通知。这是我到目前为止的代码:
function main() {
var emails = getemails();
for (var i = 0; i < emails.length; i++) {
var email = emails[i].getMessages();
if (email[0].getFrom() == "TorahAnytime Following <following@torahanytime.com>"){
var title = getTitle(email);
var shiurID = getShiurID(email);
var downloadLink = "https://dl.torahanytime.com/audio/" + shiurID;
var shiur = downloadShiur(downloadLink);
shiur.setName(title);
var emailSent = emailShiur(shiur);
if (emailSent) {email[0].moveToTrash();
Logger.log("Email moved to Trash");}
}
}
}
function getemails() {
var label = GmailApp.getUserLabelByName("TA Speeches");
return label.getThreads();
}
function getTitle(email) {
body = email[0].getPlainBody();
var begIndex = body.indexOf("from") + 4;
var endIndex = body.indexOf("on ");
var title = body.substring(begIndex, endIndex).toLowerCase().replaceAll(" ", "-").replace(/(\r\n|\n|\r)/gm, "-");
begIndex = body.indexOf("called ") + 7;
endIndex = body.indexOf(" [");
title += "-" + body.substring(begIndex, endIndex).toLowerCase().replaceAll(" ", "-").replace(/(\r\n|\n|\r)/gm, "-") + ".mp3";
return title;
}
function getShiurID(email) {
body = email[0].getPlainBody();
var begIndex = body.indexOf("[") + 1;
var endIndex = body.indexOf("]");
var link = body.substring(begIndex, endIndex).replaceAll("?v", "?a");
console.log(link);
var mainLink = UrlFetchApp.fetch(link);
//here I somehow need to get the link being used to stream that particular audio file
}
function getIDName(email) {
body = email[0].getPlainBody();
var begIndex = body.indexOf("ID ") + 3;
var endIndex = body.indexOf(" and");
return body.substring(begIndex, endIndex);
}
function downloadShiur(downloadLink) {
var audio = UrlFetchApp.fetch(downloadLink);
return audio.getBlob().getAs('audio/mp3');
}
function emailShiur(shiur) {
const maxFileSize = 26214400;
if (shiur.getBytes().length <= maxFileSize) {
MailApp.sendEmail("[Email addressed removed]", "TA Shiur (File)", "Enjoy!", {
attachments: [shiur],
name: 'Automatic Emailer Script'
});
return true;
} else {
MailApp.sendEmail("[Email addressed removed]", "TA Shiur (File)", "Error, File too large to email", {
name: 'Automatic Emailer Script'
});
return false;
}
}
我的问题是下载文件的 URL 不在 HTML 中,所以我不知道如何使用 GAS 获取它。如果您使用 chrome 的开发工具,您可以在网络选项卡中看到 URL输出示例我看到我想要获取. 有谁知道我可以使用 GAS 获取我在 chrome 的开发工具网络选项卡中看到的信息(正在接收的 URL 的名称)?谢谢!
解决方案
推荐阅读
- c - 在 C 宏中,名为 defined() 的函数从何而来?
- javascript - Javascript 承诺在我的情况下不起作用
- css - 为什么 CSS 按钮选择器 [disabled] 和 &:disabled 的工作方式相同?
- javascript - 是否有将字符串转换为特殊字符的通用功能?
- flutter - Flutter 上的数据转换
- angular - ExpressionChangedAfterItHasBeenCheckedError 在订阅中为数组赋值
- javascript - 有没有办法根据键将对象附加到现有的对象数组中
- c# - 从数据库列和 C# 中的 textBox 值中扣除值,扣除后的值必须存储在新列中
- flutter - 导入和使用自定义字体不起作用
- go - 在 defer 中关闭 gzip writer 会导致数据丢失