到目前为止,我已经得出结论,我需要在 Appsheet 上基于两个功能进行 3 个主要自动化,其中一个用于在添加新条目到应用程序时(在上次联系日期后 15 天)在日历上创建新提醒列),以及一个用于在删除潜在顾客时删除现有提醒的提醒。当“Ultimo Contato”专栏更新时,我还会将它们用于第三次自动化。我想同样的函数也可以用于生日?
到目前为止,我所做的只是尝试创建一个事件,但我很确定,如果它正确的话,这也是非常简单的:
function createAllDayEvent(title, startDatetime) {
var nome = SpreadsheetApp.getActiveSheet().getLastRow('A').getValue();
var ultimoContato = SpreadsheetApp.getActiveSheet().getLastRow('J').getValue();
var dataDoLembrete = ultimoContato + 15
const eventName = typeof title === 'string' ? title : 'Entrar em contato com' + nome;
const startDate = typeof startDatetime === 'string' ? new Date(startDatetime) : newDate(dataDoLembrete);
var event = CalendarApp.getDefaultCalendar().createAllDayEvent() (
eventName,
startDate,
);
console.log('Created event with id', event.getId());
}
我知道我可能要求太多,但我做这件事比我想象的要困难
GS:
此函数创建事件并保存 ID,以防我希望轻松删除它们。
function postEvents() {
const cal = CalendarApp.getCalendarById(gobj.globals.calid)
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Your Sheet Name");
const [hs, ...vs] = sh.getDataRange().getDisplayValues();
vs.filter(r => r[4] == "").filter(e => e).forEach((r,i) => {
let ts = r[1].toString().split('/').concat(10).map(e => Number(e))
let te = r[1].toString().split('/').concat(10,30).map(e => Number(e))
let ev = cal.createEvent(`${r[2]} ${r[0]}`, new Date(ts[2],ts[0]- 1,ts[1],ts[3]),new Date(te[2],te[0]-1,te[1],te[3],te[4]));
if(ev) {
sh.getRange(i + 2,5).setValue(ev.getId());
ev.setDescription(r[3]);
ev.addEmailReminder(0);
ev.addEmailReminder(60);
ev.addEmailReminder(90);
}
});
}
这会查找日历中的事件
function findEventsById() {
const cal = CalendarApp.getCalendarById(gobj.globals.calid)
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Your Sheet Name");
const [hs, ...vs] = sh.getDataRange().getDisplayValues();
const ids = vs.map((r,i) => r[4] ? [cal.getEventById(r[4]).getStartTime()] : [""]);
sh.getRange(2,6,ids.length,ids[0].length).setValues(ids);
}
这就是工作表的设置方式: