【问题标题】:How to send calendar based when checkbox is ticked勾选复选框时如何发送日历
【发布时间】:2022-11-03 02:28:18
【问题描述】:

现在,我很难找出一个脚本,当用户勾选复选框时,它将根据付款日期提前 3 周发送电子邮件邀请

需要你的帮助。

这是我的代码,它相当不完整。


function sendreminder(){
var sheet = SpreadsheetApp.getActiveSheet();
var sheetName = sheet.getName();
var range = e.range;
var approvalEdit = range.getValue().toString(); // Use string to avoid accidentally accepting truthy values.
var column = range.getColumn();
var emailsend = "EMAIL_SENT";
var approvalColumnNo = 12;
var invoice = sheet.getRange(e.range.getRow(),12).getValue();
var calend = CalendarApp.createAllDayEvent();
if( sheetName === "Sheet1" && column === approvalColumnNo && approvalEdit === "true" ){
calend.createAllDayEvent('TEST', new Date('November 20, 2022')
SpreadsheetApp.flush();

非常感谢!

它将根据付款日期提前 3 周发送电子邮件邀请

【问题讨论】:

  • 不要共享spreadsheets/images 作为唯一的数据源。确保将输入和预期输出添加为纯文本表问题。 Click here 轻松创建表格,分别是也更容易复制/粘贴.如果它不是自包含的,您的问题可能会被关闭。 Your email address can also be accessed by the public,如果您共享 Google 文件。
  • 在您的脚本中,似乎没有声明 e。所以,我担心你可能错误地复制了你当前的脚本。这个怎么样?

标签: google-apps-script google-sheets


【解决方案1】:

您可以尝试以下脚本:

function calendarEvent(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var sheetName = sheet.getName();
  var val = e.value;
  var rCol = e.range.getColumn();
  var rRow = e.range.getRow();
  if(rCol==12 && val=="TRUE" && sheetName=="Sheet1")
  {
    var val = sheet.getRange(rRow, 10).getValue();
    var day = new Date(val).getTime() + 86400000*21; // 21 for the ammount of days
    var nDay = new Date(day);
    //Logger.log(day.setDate(day.getDate()+21));
    CalendarApp.createAllDayEvent('This is a test event',nDay);
  }
}

例子:

参考:

【讨论】:

    猜你喜欢
    • 2011-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-15
    • 1970-01-01
    • 2015-06-26
    • 2018-10-03
    • 2013-09-01
    相关资源
    最近更新 更多