簡體   English   中英

使用 Google Apps 腳本將 Gmail 解析為 Google 表格

[英]Parsing Gmail into Google Sheets using Google Apps Script

我正在嘗試使用特定主題解析 gmail 並將數據 output 到特定列中的谷歌表。 我只使用 getPlainBody() 選項讓腳本工作,但后來我嘗試添加 getDate() ,現在出現錯誤。 我確信我的語法有問題,但我已經絞盡腦汁了幾個星期,現在嘗試在 getGmail 和收集功能中進行各種操作。 我當前的代碼如下,運行時,email 的日期位於 A 列,email 的整個主體位於 B 列,我收到錯誤“TypeError:message.replace 不是函數”。 有人可以幫助指導我嗎?

    function onOpen() {
    const spreadsheet = SpreadsheetApp.getActive();
    let menuItems = [
        {name: 'Gather emails', functionName: 'gather'},
    ];
    spreadsheet.addMenu('New Employees', menuItems);
}
function gather() {
  let messages = getGmail();
  if (messages.length > 0) {
    let curSheet = SpreadsheetApp.getActiveSheet();
    curSheet.getRange(curSheet.getLastRow() + 1, 1, messages.length, messages[0].length).setValues(messages);
     messages.forEach(message => {curSheet.appendRow(parseEmail(message))});
  }
}

function getGmail() {
  const query = "from:(ApplicationServices@help.net) subject:New Account Newer_than:18d NOT label:done";
  let threads = GmailApp.search(query,0,10);

  let label = GmailApp.getUserLabelByName("done");
  if (!label) {label = GmailApp.createLabel("done")}

  let messages = [];
  threads.forEach(thread => {
    const m = thread.getMessages()[0];
    messages.push([m.getDate(), m.getPlainBody()]);
    label.addToThread(thread);
  });
  return messages;
}

function parseEmail(message){
    let parsed = message.replace(/,/g,'')
        .replace(/\n\s*.+: /g,',')
        .replace(/^,/,'')
        .replace(/\n/g,'')
        .replace(/^[\s]+|[\s]+$/g,'')
        .replace(/\r/g,'')
        .split(',');
    let result = [0,1,2,3,4,5,6,7].map(index => parsed[index]);

    return result;
}

以下是電子郵件的樣子:

已創建帳戶:

員工 ID:987333 第一:Bill 最后:Walsh 用戶名:bwalsh 密碼:67&&8^.!

員工必須盡快更改其 email 密碼。 密碼每 90 天過期一次,並且必須包含 8 個或更多字符(至少一個大寫字母、一個小寫字母和一個數字或符號)。 注意:此密碼也是訪問谷歌Email的密碼。

如果您需要幫助,請致電 998-9999 或發送電子郵件至 helpdesk@help.net 聯系您的學區技術支持團隊或 HELP IT 幫助台。

您能提供的任何幫助將不勝感激。

您的getGmail() function 返回一個二維數組,其中每個子數組中的第一個值是日期,第二個值是文本字符串。 要訪問文本字符串,您需要通過索引1引用它,如下所示:

     messages.forEach(message => { curSheet.appendRow(parseEmail(message[1])) });

暫無
暫無

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

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