TypeError: rows [i] [2] .getDate не является функцией скрипта приложений Google. - PullRequest
1 голос
/ 16 июня 2020
• 1000 *

«TypeError: rows [i] [2] .getDate не является функцией»

Данные:

From the       to the (included)    Date of request    Status
15-Jul-2020    16-Jul-2020          22-May-2020        Reflected
17-Jul-2020    18-Jul-2020          22-May-2020        Rejected
18-Jun-2020    18-Jun-2020           6-Jun-2020        Pending

, если я использую только $ {rows [i] [2]}, я получаю дату в полном формате: «среда, 15 июля 2020 г., 00:00:00 GMT + 0100 (Briti sh Summer Time»

function VacationRequest() {
  let ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  let rows = ss.getDataRange().getValues();
  var emailRecipients = rows[1][0]+"@google.com";
  var CCemail = rows[1][1]+"@google.com"+ "," +rows[2][1]+"@google.com"+ "," +rows[3][1]+"@google.com"+ "," +rows[4][1]+"@google.com";
  var emailSubject = "Vacation Request";
  var monthNames = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec" ];
  var htmlBody = `
  <div dir="ltr">
        <div>
            <p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt">
             <span style="font-size:11pt;font-family:Arial;font-variant-numeric:normal;font-variant-east-asian:
             normal;vertical-align:baseline;white-space:pre-wrap">Hello, follow your feedback regarding your requests that we have registered:</span>
           </p>
           <br>
        </div>
        <div>
          <br>
        </div>
        <div>
          <br>
        </div>

        <div>
          <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:40px">
                <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(56,118,29);
                font-weight:bold;color:rgb(255,255,255);text-align:center;border:1px solid rgb(204,204,204)">From
                the </td>
                <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(56,118,29);
                font-weight:bold;color:rgb(255,255,255);text-align:center;border:1px solid rgb(204,204,204)">to the
                (included)</td>
                <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(251,188,4);
                font-weight:bold;text-align:center;border:1px solid rgb(204,204,204)">Date of
                request</td>
                <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;background-color:rgb(251,188,4);
                font-weight:bold;text-align:center;border:1px solid rgb(204,204,204)">Status
                </td>
              </tr>`;


  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()+"-"+monthNames[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].getDate()+"-"+monthNames[rows[i][3].getMonth()]+"-"+rows[i][3].getFullYear()}
          <\/td>
            <td style="overflow:hidden;padding:2px 3px;vertical-align:middle;text-align:center;border:1px solid rgb(204,204,204)">
            ${rows[i][4].getDate()+"-"+monthNames[rows[i][4].getMonth()]+"-"+rows[i][4].getFullYear()}
          <\/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>`;


   }
  htmlBody += `</div>
        <div>
          <br>
        </div>
        <div>
          <br>
        </div>
        <div>
          <span style="font-variant-numeric:normal;font-variant-east-asian:normal;background-color:transparent;
          font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">You can already check it on "Lisbon Viacon trix" (</span>
          <a href="https://docs.google.com/spreadsheets/d/10pn2u_7q7S0WdXc7T5MvFRzJUA8j5khQri4JUQWReL4/edit?usp=sharing"
          style="text-decoration-line:none" target="_blank" data-saferedirecturl="https://www.google.com/url?q=https://docs.google.com/spreadsheets/d/10pn2u_7q7S0WdXc7T5MvFRzJUA8j5khQri4JUQWReL4/edit?usp%3Dsharing&amp;source=gmail&amp;ust=1591948538309000&amp;usg=AFQjCNE7iOAje132yODyY-qKHWsqfUqyzA">
          <span style="font-size:10pt;font-family:Roboto,sans-serif;color:rgb(38,50,56);background-color:transparent;font-variant-numeric:normal;font-variant-east-asian:normal;text-decoration-line:underline;vertical-align:baseline;white-space:pre-wrap">https://docs.google.com/<wbr>spreadsheets/d/10pn2u_<wbr>7q7S0WdXc7T5MvFRzJUA8j5khQri4J<wbr>UQWReL4/edit?usp=sharing</span></a><span style="font-variant-numeric:normal;font-variant-east-asian:normal;background-color:transparent;font-size:11pt;font-family:Arial;vertical-align:baseline;white-space:pre-wrap">).</span>
        </div>`;  
  if(MailApp.getRemainingDailyQuota()>0){
   MailApp.sendEmail({to: emailRecipients,subject: emailSubject,htmlBody: htmlBody,cc: CCemail})
};
}

1 Ответ

1 голос
/ 16 июня 2020

Ответ:

В этом случае вы можете принудительно прочитать данные ячейки как объект Date с помощью new Date().

Модификация:

Заменить:

rows[i][2].getDate()

на:

new Date(rows[i][2]).getDate()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...