GAS에서 Gmail에 테이블을 만드는 코드

7878 단어 GoogleAppsScript
최근 Gmail에 테이블을 만들 수 있다고 알았으므로 코드 작성.
이 테이블의 색조가 좋다고는 생각하고 있지 않지만, 다시 HTML, CSS 만드는 것도 싫었기 때문에 메모 대신에 기사 작성.

두번째 인수에 type를 끼워넣어서 품목이 있고 없는 변경을 추가해 있다.

▼ 항목 없음


▼항목 있음


아래 코드입니다.

createMaildraft.gs

function createMaildraft() {

  const shtName = 'table';
  const sht = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(shtName);
  const values = sht.getRange('A2:C5').getValues();

  // 本文(html)以外の設定  
  const recipient = '';
  const subject = '件名';
  const body = ''; 

    // 本文の設定
  let html = `
  本文作成

  ▼テーブルの挿入
  ${makeTable_(values, 1)}

  挿入完了
  `;

  // 空白は<br>に変換しないと改行にならないので処理
  html = html.replace(/\n/g, '<br>');
  GmailApp.createDraft(recipient, subject, body, {htmlBody :html})
}


makeTable_.gs
/**
* 二次元配列からtableのHTMLを返すコード
* type:0 項目名なし(デフォルト)
* type:1 項目名あり
* 
* @param {object}  二次元配列のデータ
* @param {number}  テーブル作成の形
* @return {string} tableのHTMLコード
*/

function makeTable_(values, type = 0) {

  let table = "<table style = 'width: auto; border-spacing: 0;font-size:14px; border: 1px solid #ddd;'>";

  for(let i=0; i<values.length; i++){
    table += '<tr>';

    if (i === 0 && type === 1) {
      for(let cell of values[i]){
        table += `<th style = 'padding: 8px 15px; border: 1px solid #fff; background: #888; font-weight: bold; color:white;'>${cell}</th>`;
      }
    } else if (i % 2 === 1) {
      for(let cell of values[i]){
        table += `<td style = 'padding: 8px 15px; border: 1px solid #ddd;'>${cell}</td>`;
      }
    } else {
      for(let cell of values[i]){
        table += `<td style = 'padding: 8px 15px; border: 1px solid #ddd; background: #f5f5f5;'>${cell}</td>`;
      }
    }
    table += '</tr>';
  }
  table += '</table>';

  return table;
}

좋은 웹페이지 즐겨찾기