मेरे पास एक ऑनलाइन फॉर्म है जो जीमेल को सबमिट फॉर्म फील्ड डेटा भेजता है। मैं फॉर्म फ़ील्ड डेटा को Google शीट में निकालने के लिए नीचे दी गई स्क्रिप्ट का उपयोग कर रहा हूं। वर्तमान में, स्क्रिप्ट इनबॉक्स से निकलती है। मैं सोच रहा हूं कि क्या स्क्रिप्ट को समायोजित करने का कोई तरीका है ताकि वह इनबॉक्स के बजाय एक जीमेल लेबल (उदाहरण के लिए: फॉर्म सबमिशन) को देख सके।

function parseEmailMessages(start) {

  start = start || 0;

  var threads = GmailApp.getInboxThreads(start, 100);
  var sheet = SpreadsheetApp.getActiveSheet();

  for (var i = 0; i < threads.length; i++) {

    // Get the first email message of a threads
    var tmp,
      message = threads[i].getMessages()[0],
      subject = message.getSubject(),
      content = message.getPlainBody();

    // Get the plain text body of the email message
    // You may also use getRawContent() for parsing HTML

    // Implement Parsing rules using regular expressions
    if (content) {

      tmp = content.match(/First:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var first = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Last:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var last = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Title:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var title = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Organization:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var organization = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/City:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var city = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/State:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var state = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/Country:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@./\s\-]+)(\r?\n)/);
      var country = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/E-mail:\s*([A-Za-z0-9!"?`?|õüö’çëÅíšÃÉÁÇÃáéñãóú#&;()-,'@_.\-]+)/);
      var email = (tmp && tmp[1]) ? tmp[1].trim() : 'BLANK';

      tmp = content.match(/BLANK:\s*([\s\S]+)/);
      var blank = (tmp && tmp[1]) ? tmp[1] : 'BLANK';

      sheet.appendRow([first, last, title, organization, city, state, country, email]);

    } // End if

  } // End for loop
}        
1
dlc3172 31 जिंदा 2019, 00:58

1 उत्तर

सबसे बढ़िया उत्तर
  • आप threads को formsubmissions के एक लेबल से पुनः प्राप्त करना चाहते हैं जो कि लेबल का नाम है।

अगर मेरी समझ सही है, तो इस संशोधन के बारे में क्या? मुझे लगता है कि आपकी स्थिति के लिए कई उत्तर हैं। तो कृपया इसे उनमें से सिर्फ एक के रूप में सोचें।

संशोधित स्क्रिप्ट:

कृपया निम्नानुसार संशोधित करें।

var threads = GmailApp.getInboxThreads(start, 100);
var labelName = "formsubmissions"; // Please set the label name
var labels = GmailApp.getUserLabels();
var threads = [];
for (var i = 0; i < labels.length; i++) {
  if (labels[i].getName() == labelName) {
    threads = labels[i].getThreads();
    break;
  }
}

ध्यान दें:

  • Tis संशोधित स्क्रिप्ट मानती है कि var sheet = SpreadsheetApp.getActiveSheet(); के नीचे की स्क्रिप्ट ठीक काम करती है।

सन्दर्भ:

अगर मैंने आपके प्रश्न को गलत समझा, तो मैं क्षमा चाहता हूँ।

1
Tanaike 31 जिंदा 2019, 08:14