当前位置: 首页 > 知识库问答 >
问题:

如何在Google Sheet中设置自动电子邮件提醒

施俊明
2023-03-14

我重新调整了这张谷歌表单的用途,下面链接了脚本:

https://docs.google.com/spreadsheets/d/1z1EfLPYRze0zWnk729ChCf_kOY-JPEV9dvjCbXHNZDc/edit?usp=sharing

以前有人分享过这个,我试着根据我的需要调整它。它可以根据“发送日期”变为当前日期发送电子邮件提醒。我只是需要它做一些小事情,但我无法理解,因为我没有编写脚本/编写代码的经验。

我想编写需要添加到当前脚本中的脚本,以执行以下操作:

当脚本基于触发器每天在工作表上运行时——并为特定行发送电子邮件提醒——它应该使用新日期更新这些行的第1列——基本上将现有日期提前第5列中的天数(到下一个提醒的天数)。((例如,第6行的日期为2020年2月7日-在发送电子邮件提醒后-必须在2月7日之前添加180天(第5列数据),并用新日期更新第1列,即2020年8月5日;因此工作表准备好发送下一个提醒。如果第5列显示为0-则不应更新该日期,只需保持该行不变即可。)。

同时在Col 6中——它不仅应该更新“发送的电子邮件”,还应该更新“这一天”的附加信息,这是电子邮件发送的日期。

最后,表格的顶部应按最新日期和第1列中的最高日期排序,底部应按最短日期排序。

我提出了这段额外的代码,但由于我不知道任何语法,它不起作用:

 var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet();
  //Get the dates from the cell and convert them into Milliseconds since 1970/01/01
  var First = new Date(ss.getRange(row[1]).getValue().getTime();
  var dayInMs = 24*60*60*1000    //one day in Milliseconds
  //add row days to each date in milliseconds
  First = First + ((row[4])*dayInMs)
        //Convert Milliseconds to date use new Date(time in ms) and set Values of the cell
  ss.getRange(row[1]).setValue(new Date(First));

我怎样才能继续?

共有1个答案

赫连冠玉
2023-03-14

以下是如何将180天添加到单元格中的日期:

function myFunction() {
  var data = SpreadsheetApp.getActive().getActiveSheet().getDataRange().getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var car = row[1];
    var date = new Date(row[2]); // make the sheet value a date object
    Logger.log('original value = '+date);
    Logger.log('method 1 : '+new Date(date.getTime()+180*3600000*24));
    Logger.log('method 2 : '+new Date(date.setDate(date.getDate()+180)));
  }
}

请参阅Google应用程序脚本将一天添加到日期

下一个问题很简单:

"Email Sent On " + Utilities.formatDate(dt,"GMT", "dd-MM-yy")

第三个问题

var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheet = ss.getSheets()[0];
 var range = sheet.getRange("A1:C7");

 // Sorts by the values in the first column (A)
 range.sort(1);

 // Sorts by the values in the second column (B)
 range.sort(2);

 // Sorts descending by column B
 range.sort({column: 2, ascending: false});

 // Sorts descending by column B, then ascending by column A
 // Note the use of an array
 range.sort([{column: 2, ascending: false}, {column: 1, ascending: true}]);

 // For rows that are sorted in ascending order, the "ascending" parameter is
 // optional, and just an integer with the column can be used instead. Note that
 // in general, keeping the sort specification consistent results in more readable
 // code. We could have expressed the earlier sort as:
 range.sort([{column: 2, ascending: false}, 1]);

 // Alternatively, if we wanted all columns to be in ascending order, we would use
 // the following (this would make column 2 ascending)
 range.sort([2, 1]);
 // ... which is equivalent to
 range.sort([{column: 2, ascending: true}, {column: 1, ascending: true}]);

 类似资料:
  • emailNotification是假设只更改文档的国家设置,还是也可以更改电子邮件语言?

  • 我有一个自定义的电子邮件发送给用户的要求,从广告B2C,当她/他重置密码。 我按照此文档设置自助密码重置流,效果良好:https://docs.microsoft.com/en-us/azure/active-directory-b2c/add-password-reset-policy?pivots=b2c-自定义策略 为了为密码重置提供一封带有品牌的电子邮件,我遵循以下代码,因为看起来唯一的其

  • 每个社区都需要发送电子邮件给用户,用来激活账户、重置密码、接收通知以及与其他用户通讯交流。作为论坛管理员,您首先要做的几件事之一就是配置好论坛的邮件服务!配置错误的话,用户在注册时会收到报错。 Flarum 默认提供以下所列驱动,若有需要,开发者可自行开发插件添加 自定义邮件驱动。 这是最常用的邮件驱动,需要您配置主机地址、端口、加密方式、用户名和密码,以使用外部 SMTP 服务。请注意,加密方式

  • 我正在通过DocuSign eSignature API成功发送信封,并且对作为签名过程一部分发送的电子邮件有疑问。发送请求时,我会收到以下电子邮件(使用沙盒环境): > 当每个收件人单击链接查看要签署的协议时,向我发送电子邮件(例如,“John Smith查看了Acme共同客户协议”) 协议完成后,向我(和每位收件人)发送电子邮件。 我正试图了解每一项都有哪些选项可供选择,因为: 启用/禁用每封

  • 问题内容: 我如何使用php5验证输入值是有效的电子邮件地址。现在我正在使用此代码 但显示已弃用的错误。我该如何解决此问题。请帮我。 问题答案: 您可以使用该功能,该功能为您提供了许多方便的验证和消毒选项。 PHP手册filter_var() 在 PHP > = 5.2.0中*可用 * 如果您不想更改依赖于函数的代码,请执行以下操作: 注意 :对于其他用途(需要Regex的地方),不赞成使用的函数

  • 我试图发送电子邮件使用Nodejs包Nodemailer,但我无法更改从电子邮件到我的自定义域电子邮件。任何帮助都将不胜感激。这是我用来发送电子邮件的代码。