हैलो, मैं अपने Google दस्तावेज़ में से केवल एक शीट भेजने के लिए अपनी पहली स्क्रिप्ट लिखने की कोशिश कर रहा हूं, लेकिन हर बार मैं इसके बजाय सभी शीट भेज देता हूं। दस्तावेज़ में प्रतिदिन एक मुख्य पृष्ठ होता है जहाँ मेरे पास ईमेल की सूची होती है और फिर 7 पत्रक होते हैं जिन्हें सोमवार, मंगलवार, आदि कहा जाता है

यह वह कोड है जिसका मैं उपयोग करता हूं - क्या आप मदद कर सकते हैं?

function emailActivesheetAsPDF() {
  DocumentApp.getActiveDocument();
  DriveApp.getFiles();

  const ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1_3VpJaFliJVYt1JL3cLSKw2ftsmsLeDjznHJ66-wq9w/edit");

  const value = ss.getSheetByName("Daily").getRange("B5").getValue();
  const email = value.toString();

  const subject = 'Yesterday Handover';

  const body = "Please find attached yesterday handover";

  const url = 'https://docs.google.com/spreadsheets/d/1_3VpJaFliJVYt1JL3cLSKw2ftsmsLeDjznHJ66-wq9w/export?';

  const exportOptions =
    'exportFormat=pdf&format=pdf'
    '&size=legal'
    '&portrait=true'
    '&fitw=false'
    '&sheetnames=false&printtitle=false'
    '&pagenumbers=false&gridlines=false'
    '&fzr=false'
    '&gid=1263775066';
 
  var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
  
  var response = UrlFetchApp.fetch(url+exportOptions, params).getBlob();
  
    GmailApp.sendEmail(email, subject, body, {
      htmlBody: body,
      attachments: [{
            fileName: "Handover" + ".pdf",
            content: response.getBytes(),
            mimeType: "application/pdf"
        }]
    });
}
0
Sebastiano Ligato 17 जिंदा 2021, 03:40

1 उत्तर

सबसे बढ़िया उत्तर

स्पष्टीकरण / मुद्दा:

  • आप exportOptions वेरिएबल में विकल्पों को जोड़ना भूल गए हैं और इसलिए exportOptions को केवल &size=legal का मान मिलता है और gid सहित बाकी मापदंडों को अनदेखा कर देता है, जिन्हें आप शीट आईडी निर्दिष्ट करते हैं . एक समाधान + के माध्यम से विकल्पों को जोड़ना है।

  • मैंने इसे और अधिक लचीला बनाने के लिए आपके कोड में भी सुधार किया है। उदाहरण के लिए, कोड में एक शीट को उसके gid द्वारा परिभाषित करने के बजाय, आप इसे इसके नाम से वेरिएबल sheetToPrint में परिभाषित कर सकते हैं और फिर GAS को इसका gid मिलेगा और इसे पीडीएफ के लिए निर्यात विकल्प के रूप में उपयोग करें।

समाधान:

function emailActivesheetAsPDF() {
  const sheetToPrint = "Daily"; // name of the sheet to print
  const ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1_3VpJaFliJVYt1JL3cLSKw2ftsmsLeDjznHJ66-wq9w/edit");
  const ssID = ss.getId();
  const email = ss.getSheetByName("Daily").getRange("B5").getValue();
  const subject = 'Yesterday Handover';
  const body = "Please find attached yesterday handover";
  const shID = ss.getSheetByName(sheetToPrint).getSheetId();
  const url = "https://docs.google.com/spreadsheets/d/"+ ssID + "/export?format=pdf&id="+ssID;
  const exportOptions =
    '&size=legal'+
    '&portrait=true'+
    '&fitw=false'+
    '&sheetnames=false&printtitle=false'+
    '&pagenumbers=false&gridlines=false'+
    '&fzr=false'+
    '&gid='+shID; 
  var params = {method:"GET",headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
  
  var response = UrlFetchApp.fetch(url+exportOptions, params).getBlob();
  
    GmailApp.sendEmail(email, subject, body, {
      htmlBody: body,
      attachments: [{
            fileName: "Handover" + ".pdf",
            content: response.getBytes(),
            mimeType: "application/pdf"
        }]
    });
}
1
soMario 17 जिंदा 2021, 04:29
यह कमाल है - धन्यवाद। क्या यह सुनिश्चित करने का कोई तरीका है कि पीडीएफ एक पृष्ठ पर फिट होने के लिए भेजा जाए, फिलहाल यह 3 पृष्ठों से अधिक है। क्षमा करें इस पर बहुत नया :) धन्यवाद
 – 
Sebastiano Ligato
18 जिंदा 2021, 10:03
मैं इसका पता लगाता हूं। मुझे '&fitw=false' को '&fitw=true आपकी मदद के लिए धन्यवाद में बदलना पड़ा।
 – 
Sebastiano Ligato
18 जिंदा 2021, 10:14
HI मारियो - उसने अंत में काम नहीं किया क्योंकि मेरे पास 7 अलग-अलग टैब हैं और मैं हर दिन एक अलग भेजना चाहता हूं - लेकिन मैंने प्रत्येक टैब के लिए 7 अलग-अलग स्क्रिप्ट बनाने की कोशिश की ताकि मैं प्रत्येक दिन चल सकूं लेकिन यह रहता है शीट का नाम बदलने पर भी वही भेज रहा हूँ... क्या आप सुझाव दे सकते हैं कि मैं क्या कर सकता हूँ, कृपया? धन्यवाद
 – 
Sebastiano Ligato
20 जिंदा 2021, 00:48
बस जिज्ञासु क्या आपके पास इस पद्धति का संदर्भ है या आपने इसे स्वयं समझ लिया है? मैंने इस तरह की किसी वस्तु के साथ अनुलग्नक कभी नहीं देखे हैं और मैं fetchapp और फ़ाइलों को कनवर्ट करने के लिए इसका उपयोग करने के बारे में अधिक जानना चाहता हूं। मैंने केवल जीथब और एसओ पर कुछ संदर्भ देखे हैं, लेकिन मैं प्रलेखन में किसी भी संदर्भ का पता नहीं लगा सकता। धन्यवाद। आपको परेशान करने के लिए माफी चाहता हूं।
 – 
Cooper
18 अप्रैल 2021, 18:59
दुर्भाग्य से मेरे पास आधिकारिक संदर्भ नहीं है और मुझे नहीं लगता कि यह मौजूद है। मुझे आपके द्वारा चुने जा सकने वाले सभी विकल्पों के साथ एक गिटहब स्रोत भी मिला।
 – 
soMario
18 अप्रैल 2021, 21:41