【问题标题】:Get the date with format on google sheets script在谷歌表格脚本上获取日期格式
【发布时间】:2020-06-13 09:59:59
【问题描述】:

我正在使用此脚本从下表中获取一些信息(此表信息用于通过电子邮件发送信息)并且我得到了一个巨大的数据格式,所以我尝试获取日、月和年使用 .getDay、.getMonth().getFullYear(),但我收到错误消息:

“异常:一天内服务调用次数过多:电子邮件。(第 108 行,文件“代码”)”

我想那是因为我在一个循环中多次使用 get 3 次,有没有办法在没有此错误消息的情况下采取?因为我想采用电子表格上的格式日期(Day-shortMonth-year)

我看到了Utilities.formatDate(),但我想不出如何使用它。

这是脚本的一部分,我没有把所有的东西都放好,因为脚本有点大,但如果你需要,请告诉我,我会编辑并放好所有东西。

function myFunction() {
  let ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let rows = ss.getDataRange().getValues();
  var emailRecipients = rows[1][0]+"@gmail.com";
  var CCemail = rows[1][1]+"@gmail.com";
  var emailSubject = "Vacation Request";
for (i = 1; i < rows.length; i++) {
    let bg_color;
    switch(rows[i][5]) {
        case 'Reflected':
              bg_color = 'green';
              break;
        case 'Cancelled':
              bg_color = 'Darkred';
              break;
        case 'Pending':
              bg_color = 'orange';
              break;
        case 'Rejected':
              bg_color = 'red';
              break;
        default:
              bg_color = 'white';
    }
    htmlBody += `   
     <table cellspacing="0" cellpadding="0" dir="ltr" border="1" style="table-layout:fixed;font-size:10pt;font-family:Arial;width:0px;border-collapse:collapse;border:none">
       <colgroup>
              <col width="100">
              <col width="100">
              <col width="100">
              <col width="100">
       </colgroup>
       <tbody>  
          <tr style="height:21px">
            <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;text-align:center;border:1px solid rgb(204,204,204)">
            ${rows[i][2].getDate()+"-"+rows[i][2].getMonth()+"-"+rows[i][2].getFullYear()}
          <\/td>
            <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;text-align:center;border:1px solid rgb(204,204,204)">
            ${rows[i][3]}
          <\/td>
            <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;text-align:center;border:1px solid rgb(204,204,204)">
            ${rows[i][4]}
          <\/td>
          <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:${bg_color};font-weight:bold;color:rgb(255,255,255);text-align:center;border:1px solid rgb(204,204,204)">  
            ${rows[i][5]}
          <\/td>
        <\/tr>
     <\/table>`;

第 108 行是:

“MailApp.sendEmail({to: emailRecipients,subject: emailSubject,htmlBody: htmlBody,cc: CCemail})”

【问题讨论】:

  • 当您确定是哪条线路导致问题时,请告诉我们,也许我们可以提供帮助。
  • 是的,绝对需要编辑 - 导致问题的脚本部分不是您发布的部分。正如错误明确指出的那样,您超出了配额,最有可能在一天内发送电子邮件
  • 我添加了第 108 行,在哪里检索错误!
  • 是的,quota issue 好吧 - 你必须等到它补充(大约 24 小时,但它发生的窗口是未知的)
  • 太好了,感谢您的解释。

标签: google-apps-script google-sheets google-sheets-formula


【解决方案1】:

尝试在循环中添加类似的内容,这样您就不会再遇到这个问题了。

if(MailApp.getRemainingDailyQuota()>0){
   MailApp.sendEmail({to: emailRecipients,subject: emailSubject,htmlBody: htmlBody,cc: CCemail})
}

【讨论】:

  • 谢谢库珀!!!其他疑问,有没有办法将带有月份日期的部分更改为“Jan,Fev,...”?
  • 我不明白你的附加问题。
  • 我问了这行:"${rows[i][2].getDate()+"-"+rows[i][2].getMonth()+"-"+rows [i][2].getFullYear()}" 其中 [getMonth] 返回给我的月份数,而不是名称,你对我该怎么做有什么建议吗?因为我搜索,但我认为我搜索的方式错误
  • const mA=["Jan","Feb","Mar",....]; ${rows[i][2].getDate()+"-"+mA[rows[i][2].getMonth()]+"-"+rows[i][2].getFullYear()}
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多