这应该很简单,很标准,但是我在任何地方都找不到。
因此,该网页上有许多我想在我的gCal上进行的活动。但是我不想简单地一次导入它们,因为它们会定期更新,而是订阅基于它们的ical feed。
因此,我已经使用IMPORTXML
函数成功地将页面解析为gSheet,并使用完全相同的标题和格式化导入csv文件的gCal要求将其发布为csv。
现在我要做的就是将csv转换为ical,因为gCal导入但不订阅csv(为什么?!)。那里有很多csv-to-ical转换器,有些甚至在线,但它们 all 要求您上传csv文件,而不要输入网址(更不用说作为参数,而不是作为POST查询了。
如果只有一个Google Apps脚本可以执行...可以吗?怎么样?
因此,我编写了一个文件,该文件正在生成ics文件,这似乎是有序的,因为我对gSheets中的字段进行了相应的格式化,但是gCal在没有错误的情况下进行订阅时未显示任何事件。我怀疑这可能与this有关。
csv2ical.gs :
function doGet() {
return
ContentService
.createTextOutput(HtmlService.createTemplateFromFile('template')
.evaluate().getContent()).setMimeType(ContentService.MimeType.ICAL);
}
template.html
<? var url = 'https://docs.google.com/spreadsheets/d/e/2PACX-1vQevL9qR46RxyhcmHrp8ekoElMLctUjazcuYlKsIkFeRsEQe0XOiYrJSF1OIyfRfshzUGncfdh12kst/pub?gid=709766031&single=true&output=csv'; ?>
BEGIN:VCALENDAR
VERSION:2.0
<? var events = Utilities.parseCsv(UrlFetchApp.fetch(url).getContentText()); ?>
<? for(var i=1;i<events.length;i++){ ?>
BEGIN:VEVENT
SUBJECT:<?= events[i][0] ?>
DESCRIPTION:<?= events[i][1] ?>
DTSTART:<?= events[i][2] ?>
DTEND:<?= events[i][3] ?>
LOCATION:<?= events[i][4] ?>
STATUS:CONFIRMED
END:VEVENT
<? } ?>
END:VCALENDAR