使用Google Apps脚本将csv转换为ical

时间:2018-07-11 01:03:27

标签: csv google-apps-script icalendar

这应该很简单,很标准,但是我在任何地方都找不到。

因此,该网页上有许多我想在我的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

0 个答案:

没有答案