当前位置:首页 > 未分类 > 正文内容

Save Paypal Email Receipts in Google Spreadsheet

ceacer3周前 (05-02)未分类1076

When you make a purchase through PayPal, the payment company sends you an email receipt with the details of the transaction. The Google script will scan your Gmail mailbox for all Paypal receipts, extracts the details from the message body using regex and saves them in a Google Spreadsheet for quick reference. The script extracts the transaction ID, the item purchased, the shipping cost and other details.

Also see: Sell Digital Goods with Paypal and Google Drive

function searchGmail() {
  var threads = GmailApp.search("from:paypal", 0, 10);

  var sheet = SpreadsheetApp.getActiveSheet();

  var header = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];

  for (var t = 0; t < threads.length; t++) {
    var msgs = threads[t].getMessages();

    for (var m = 0; m < msgs.length; m++) {
      var response = extractPayPalDetails_(msgs[m]);

      var row = [];

      for (var h = 0; h < header.length; h++) {
        if (header[h] in response) {
          row.push(response[header[h]]);
        } else {
          row.push("");
        }
      }

      sheet.appendRow(row);
    }
  }
}

function extractPayPalDetails_(msg) {
  var result = {};

  var body = msg.getPlainBody().replace(/\s+/g, " "),
    html = msg.getBody().replace(/\s+/g, " ");

  var match = /[A-Z]{3}\s\d+,\s\d{4}\s\d{2}:\d{2}:\d{2}\s.{9}/g.exec(body);
  if (match) result["Transaction Date"] = match[1];

  match =
    /.*?>(.*?)<\/td>.*?>.*?>(.*?)<\/a><\/td>.*?>(.*?)<\/td>.*?>(.*?)<\/td>.*?>(.*?)<\/td><\/tr>/g.exec(
      html
    );
  if (match) {
    result["Item #"] = match[1];
    result["Item Title"] = match[2];
    result["Quantity"] = match[3];
    result["Price"] = match[4];
    result["Subtotal"] = match[5];
  }

  match = /Shipping & Handling:\s+\(.*?\)(.*?)\s+Shipping/g.exec(body);
  if (match) result["Shipping and Handling"] = match[1];

  match = /Shipping Insurance.*?:(.*?)\s+Total:\s*(.*? .*?)\s+/g.exec(body);
  if (match) {
    result["Shipping Insurance"] = match[1];
    result["Total"] = match[2];
  }

  match = /credit card statement as "(.*?)".*?purchased from:(.*?)\s+Receipt id:([\d\-]+)/gi.exec(body);
  if (match) {
    result["Name in Statement"] = match[1];
    result["Purchased From"] = match[2];
    result["Receipt ID"] = match[3];
  }

  match = /international shipping.*?Total:(.*?)\s+.*credit card statement as "(.*?)"/gi.exec(body);
  if (match) {
    result["International Shipping Total"] = match[1];
    result["International Name in Statement"] = match[2];
  }

  return result;
}

相关文章

The Best Google Add

The availability of third-party add-ons for Google Docs, Sheets and Google Slides have certainly mad...

How to Mail Merge with Outlook and Google Sheets

How to Mail Merge with Outlook and Google Sheets

The Mail merge add-on for Gmail lets you send personalized emails to your contacts in bulk. You can...

Formulas in Google Sheets Disappear When New Rows Are Added

Formulas in Google Sheets Disappear When New Rows Are Added

An order form, created in Google Forms, requires customers to provide their full name, the item quan...

How to Make Personalized Place Cards with Guest Names

How to Make Personalized Place Cards with Guest Names

Whether it is a wedding party or a business conference, those tent-shaped place cards are ideal for...

Send WhatsApp Messages with a Google Sheets Function

Send WhatsApp Messages with a Google Sheets Function

In a previous tutorial, you learned how to send WhatsApp messages from Google Sheets using the offic...

How to Play an MP3 File in Google Sheets

How to Play an MP3 File in Google Sheets

You can put the link of any MP3 audio file in Google Sheets but when you click the file link, the au...