【发布时间】:2021-09-02 20:29:25
【问题描述】:
我是 Google Apps 脚本的新手。我开发了一个脚本来根据日历标题中的子字符串更改 Google 日历事件颜色。朋友说他们也想要。我尝试将脚本部署为 Web 应用程序,以便他们可以有一个链接来运行它,并很快发现我需要 doGet 或 doPost。但是,我的脚本不需要这些。我尝试将 doGet(e) 添加到我的脚本中,目的是从那里调用我的 main 函数,但我无法完成这项工作。如何将我的简单日历编辑脚本变成网络应用程序?我看到大多数人都有 html 登录页面,但这是必需的吗?
在下面的示例中,当我运行它时,它会立即完成执行。当我将它作为 Web 应用程序运行时,我收到此错误:“脚本已完成但未返回任何内容”。但是,为事件着色的函数没有执行(事件没有被颜色编码)。
function doGet(e) { //I also tried just doGet()
ColorEvents(); //I also tried ColorEvents and Call ColorEvents
}
function ColorEvents() {
Logger.log("Color some events");
var objDateToday = new Date();
var objDateFuture = new Date();
objDateFuture.setDate(objDateFuture.getDate() + 7);
Logger.log(objDateToday + " " + objDateFuture);
var objCalendarOwned = CalendarApp.getAllOwnedCalendars();
Logger.log("found number of calendars: " + objCalendarOwned.length);
for (var i=0; i<objCalendarOwned.length; i++) {
var objCalendar = objCalendarOwned[i];
var objEvents = objCalendar.getEvents(objDateToday, objDateFuture);
for (var j=0; j<objEvents.length; j++) {
var objEvent = objEvents[j];
var strTitle = objEvent.getTitle();
if (strTitle[0] == "%") {
objEvent.setColor(CalendarApp.EventColor.MAUVE);
}
}
}
}
长期目标是开发其他人可以触发的东西(例如,每天通过日历查看要格式化的事件),所以这可能不是正确的路径,但它会在过渡期间提供一些东西。
【问题讨论】:
-
请提供minimal reproducible example。当我们可以看到脚本时,我们会更好地工作。 format code你可能想要创建一个插件或者一个库
-
不确定您的代码中是否有此错字,但在您提供的代码中,调用
ColorEvents()时括号丢失。没有它,该函数将不会被调用。另外,是什么让您认为该功能没有执行?能否提供相应的代码? -
是的,括号。并且您确实需要返回 html 或文本,read the documentation
-
你为什么不给他们一个脚本的副本,让他们从他们的帐户运行?
-
@JanineWhite,我对此很陌生,我目前不知道该怎么做。看起来您可以将项目共享给其他帐户,是这个意思吗?