簡體   English   中英

使用 g-sheet 表中的數據發送 Email

[英]Send Email with data from g-sheet table

我是 Google App Scripts 的新手,並且有一個包含五列的電子表格:ISIN、Company、SecAccNo、Size 和 Type。 我已將表的范圍命名為 A1:E20 Shares。

這些列是由公式自動填充的,所以有時我用 5 行數據填充這個表,有時用 20 行數據填充。 現在,即使我只有 5 行數據,我的腳本也會發送一個包含 20 行的 email。 所以15行空白行。

我想添加一個 function “校驗值”,檢查最后一列“類型”中是否在填充行時始終為“條目”,以便發送 email 時僅包含最后一個“條目”的行“類型”列,你能幫我嗎?

這是我的腳本:

function getEmailHtml(stockData) {
  var htmlTemplate = HtmlService.createTemplateFromFile("Template.html");
  htmlTemplate.stocks = stockData;
  var htmlBody = htmlTemplate.evaluate().getContent();
  return htmlBody;
}


function sendEmail() {
  var stockData = getData();
  var body = getEmailText(stockData);
  var htmlBody = getEmailHtml(stockData);
  if (stock.type === "Entry")

  MailApp.sendEmail({
    to: "xyz@gmail.com", //Enter your email address
    subject: "Manual Posad",
    body: body,
    htmlBody: htmlBody
  });
}
function getEmailText(stockData) {
  var text = "";
  stockData.forEach(function(stock) {
    text = text + stock.isin + "\n" + stock.company + "\n" + stock.secaccno + "\n" + stock.size + "\n" + stock.type + "\n-----------------------\n\n";
  });
  return text;
}
/**
 * @OnlyCurrentDoc
 */

function getData() {
  var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues();
  values.shift(); //remove headers
  var stocks = [];
  values.forEach(function(value) {
    var stock = {};
    //Logger.log("stocks:"+stocks);
    stock.isin = value[0];
    stock.company = value[1];
    stock.secaccno = value[2];
    stock.size = value[3];
    stock.type = value[4];
    stocks.push(stock);

  })
  //Logger.log(JSON.stringify(stocks));
  return stocks;
}

您可以通過另一種使用.getRange()方法獲得動態結尾。 用途是: .getRange(startrow, startcol, numRows, numCols )。 變化下方:

var values = SpreadsheetApp.getActive().getSheetByName("Data").getRange("Stocks").getValues();

至:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Data");
var values = sheet.getRange(1, 1, sheet.getLastRow(), 5).getValues();

僅發送 Email 中表中的數據

GS:

function getMyData() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName("Sheet1");
  const vs = sh.getRange("A1:E20").getValues().filter(r => r[4] !== '');
  Logger.log(JSON.stringify(vs));
  return vs;
}

function sendEmailTable() {
  let htmlTemplate = HtmlService.createTemplateFromFile('ah1');
  let html = htmlTemplate.evaluate().getContent();
  let recipients = "recip@gmail.com";
  let subject = "My Data"
  GmailApp.createDraft(recipients, subject, '', { htmlBody: html });
}

html:(文件名:ah1.html)

<!DOCTYPE html>
<html>
<head>
  <base target="_top">
</head>
<body>
  <div id="tabledata">
       <? var vs = getMyData(); ?>
       <table>
         <? vs.forEach((r,i)=>{ ?>
           <tr>
           <? r.forEach((c,j)=>{ ?>
             <? if(i == 0) { ?>
            <th style="padding:2px 5px;font-weight:bold;border:1px solid black;"><?= c ?> </th>           
           <? } else { ?>
             <td style="padding:2px 5px;border:1px solid black;"><?= vs[i][j] ?> </td>
           <? } ?>
         <?  }); ?>
           </tr>
         <? }); ?>
       </table>
     </div>
</body>
</html>

Email 草案:

在此處輸入圖像描述

Sheet1:范圍:A1:E20

伊辛 公司 SecAccNo 尺寸 類型
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
6 7 8 9 10
7 8 9 10 11
8 9 10 11 12
9 10 11 12 13

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM