Google 스프레드 시트 및 Apps Script의 편지 병합

Excelsson

현재 특정 시트를 가져 와서 셀 C8의 이메일 주소로 PDF로 보내는 스크립트가 있습니다.이 셀은 현재 영수증을 보내는 데 사용하므로 드롭 다운에서 이름을 선택하여 채워져 있습니다. 스크립트를 반복하고 각각의 사본과 함께 자동 이메일을 보내는 방법은 무엇입니까? 나는 이미 for성명서로 시도했지만 지금까지 운이 없습니다. 내 코드 (완벽하게 작동하지만 단일 이메일에만 해당) 및 스프레드 시트 샘플 아래. 이것을 달성하는 방법에 대한 아이디어가 있습니까?

function emailSpreadsheetAsPDF() {

var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("PDF").getRange("C8");

    var email = emailRange.getValues();

    var ss = SpreadsheetApp.getActiveSpreadsheet();

    var sheet = ss.getSheetByName("PDF"); // Enter the name of the sheet here

    var subject = "Test Receipt ";

    var body = "\n Please see attached your current test receipt: ";

    // Base URL
    var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ss.getId());

    /* Specify PDF export parameters
    From: https://code.google.com/p/google-apps-script-issues/issues/detail?id=3579
     */

    var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
         + '&size=letter' // paper size legal / letter / A4
         + '&portrait=true' // orientation, false for landscape
         + '&fitw=true&source=labnol' // fit to page width, false for actual size
         + '&sheetnames=false&printtitle=false' // hide optional headers and footers
         + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
         + '&fzr=false' // do not repeat row headers (frozen rows) on each page
         + '&gid='; // the sheet's Id

    var token = ScriptApp.getOAuthToken();

    var response = UrlFetchApp.fetch(url + url_ext + sheet.getSheetId(), {
            headers : {
                'Authorization' : 'Bearer ' + token
            }
        }).getBlob().setName(sheet.getName() + ".pdf");

    // Uncomment the line below to save the PDF to the root of your drive. 
    //  var newFile = DriveApp.createFile(response).setName(sheet.getName() + ".pdf")

    if (MailApp.getRemainingDailyQuota() > 0)
        GmailApp.sendEmail(email, subject, body, {
            htmlBody : body,
            attachments : [response]
        });
        }

https://docs.google.com/spreadsheets/d/1p4p9A9z8-EqlFGnlJ1o360gA8lcp-L29iuIPNylC4e8/edit?usp=sharing

Tanaike

나는 당신의 목표를 다음과 같이 믿습니다.

  • 시트에서 "C6"셀의 이름을 변경하여 이메일을 보내려고합니다 PDF.
  • Google Apps Script를 사용하여이를 달성하고자합니다.

수정 지점 :

  • 처음에 about MATCH, 세 번째 인수의 기본값은 1입니다. 따라서 귀하의 경우에는 0설정이 필요합니다. 따라서 "C8", "E17", "E19"및 "E21"의 공식을 다음과 같이 수정하십시오.

    • C8 : =INDEX(Sheet2!B3:B,MATCH(C6,Sheet2!A3:A,0))
    • E17 : =INDEX(Sheet2!C3:C,MATCH(C6,Sheet2!A3:A,0))
    • E19 : =INDEX(Sheet2!D3:D,MATCH(C6,Sheet2!A3:A,0))
    • E21 : =INDEX(Sheet2!E3:E,MATCH(C6,Sheet2!A3:A,0))
  • 귀하의 경우에는 몇 가지 접근 방식이 있다고 생각합니다. 그래서이 답변에서 다음 흐름을 제안하고 싶습니다.

    1. "Sheet2"에서 ​​값을 검색합니다.
    2. PDF 데이터로 변환하기위한 시트를 만듭니다.
      • 이 부분은 루프에서 실행됩니다.
        1. 시트 PDF를 템플릿으로 복사합니다 .
        2. 셀 "C6"에 이름을 설정하십시오.
        3. 템플릿 시트를 PDF 데이터로 내 보냅니다.
        4. "C6"의 이름에 해당하는 이메일을 사용하여 이메일을 보냅니다.
        5. 템플릿 시트를 삭제합니다.

수정 된 스크립트 :

function myFunction() {
  // 1. Retrieve values from "Sheet2".
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Sheet2");
  var values = sheet.getRange("A3:A" + sheet.getLastRow()).getValues();
  var template =  ss.getSheetByName("PDF");
  var ssId = ss.getId();
  var token = ScriptApp.getOAuthToken();
  var filenameOfPdf = template.getSheetName();
  
  // 2. Create sheets for converting to PDF data.
  values.forEach(([v], i) => {
    // 1. Copy the sheet `PDF` as the template.
    var temp = template.copyTo(ss).setName("temp" + (i + 1));
    
    // 2. Set the name at the cell "C6".
    temp.getRange("C6").setValue(v);
    SpreadsheetApp.flush();
    var email = temp.getRange("C8").getValue();
    
    // 3. Export the template sheet as the PDF data.
    var subject = "Test Receipt ";
    var body = "\n Please see attached your current test receipt: ";
    var url = "https://docs.google.com/spreadsheets/d/SS_ID/export?".replace("SS_ID", ssId);
    var url_ext = 'exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
    + '&size=letter' // paper size legal / letter / A4
    + '&portrait=true' // orientation, false for landscape
    + '&fitw=true&source=labnol' // fit to page width, false for actual size
    + '&sheetnames=false&printtitle=false' // hide optional headers and footers
    + '&pagenumbers=false&gridlines=false' // hide page numbers and gridlines
    + '&fzr=false' // do not repeat row headers (frozen rows) on each page
    + '&gid='; // the sheet's Id
    var response = UrlFetchApp.fetch(url + url_ext + temp.getSheetId(), {headers : {'Authorization' : 'Bearer ' + token}}).getBlob().setName(filenameOfPdf + ".pdf");
    
    // 4. Send an email using the email corresponding to the name of "C6".
    if (MailApp.getRemainingDailyQuota() > 0)
    GmailApp.sendEmail(email, subject, body, {htmlBody : body,attachments : [response]});
    
    // 5. Delete the template sheet.
    ss.deleteSheet(temp);
  });
}

참조 :

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

코드 수정-편집에서 특정 열을 선택합니다. Google Apps Script / Google 스프레드 시트

분류에서Dev

Google 스프레드 시트 집합의 Apps Script 일괄 업데이트

분류에서Dev

Google Apps Script-Google 스프레드 시트 용 필터 만들기 및 저장

분류에서Dev

Google Apps Script로 Google 스프레드 시트 부가 기능 배포 및 사용

분류에서Dev

Google 스프레드 시트의 여러 찾기 및 바꾸기를위한 Google Apps Script

분류에서Dev

Google Apps Script의 스프레드 시트에서 JSON 값 전달

분류에서Dev

Google 스프레드 시트의 경과 시간 및 분 합계

분류에서Dev

Google Apps Script를 사용하여 Google 스프레드 시트의 값을 기반으로 날짜 선택기에서 날짜를 사용 중지합니다.

분류에서Dev

두 목록의 Google 스프레드 시트 검색 및 합계

분류에서Dev

Google 스프레드 시트 Apps Script가 탭을 숨기지 않음

분류에서Dev

Google Apps Script를 사용하여 Google 설문지에 Google 스프레드 시트의 임의의 텍스트를 표시하도록 할 수 있습니까?

분류에서Dev

Google 스프레드 시트와 캘린더 간의 Apps Script에서 이중 예약을 방지하는 방법

분류에서Dev

Google Apps Script (Google 스프레드 시트)는 자바 스크립트와 다르게 작동합니다.

분류에서Dev

스프레드 시트를 복사 한 다음 새 스프레드 시트의 셀을 채우는 Google Apps Script

분류에서Dev

Google Apps Script를 사용하여 Google 스프레드 시트에서 Google 문서 도구로 이미지 복사

분류에서Dev

여러 Google 스프레드 시트를 하나의 시트로 병합

분류에서Dev

여러 Google 스프레드 시트를 하나의 시트로 병합

분류에서Dev

WorkBook의 다른 스프레드 시트에서 = UNIQUE 사용-Google Apps Script

분류에서Dev

WorkBook의 다른 스프레드 시트에서 = UNIQUE 사용-Google Apps Script

분류에서Dev

Google Apps Script-Gmail에서 이름으로 Google 스프레드 시트를 찾으려고합니다.

분류에서Dev

Google Apps Script를 사용하여 Google 드라이브 또는 URL의 이미지를 Google 스프레드 시트에 삽입

분류에서Dev

Google 시트 열의 레코드 병합

분류에서Dev

Google Apps Script에서 특정 스프레드 시트를 공유하려면 어떻게해야합니까?

분류에서Dev

Google Apps Script를 사용하여 스프레드 시트의 셀에서 텍스트를 자르려면 어떻게해야합니까?

분류에서Dev

시트를 다른 스프레드 시트로 복사 [Google Apps Script]

분류에서Dev

Apps Script를 사용하여 Google 스프레드 시트에서 특정 시트 범위의 보호되지 않은 모든 행을 삭제하는 방법

분류에서Dev

Google 스프레드 시트에서 병합 된 셀의 높이 결정

분류에서Dev

여러 Google 스프레드 시트 열을 하나의 열로 병합

분류에서Dev

Google Apps Script 편지 병합에서 빈 이메일 건너 뛰기

Related 관련 기사

  1. 1

    코드 수정-편집에서 특정 열을 선택합니다. Google Apps Script / Google 스프레드 시트

  2. 2

    Google 스프레드 시트 집합의 Apps Script 일괄 업데이트

  3. 3

    Google Apps Script-Google 스프레드 시트 용 필터 만들기 및 저장

  4. 4

    Google Apps Script로 Google 스프레드 시트 부가 기능 배포 및 사용

  5. 5

    Google 스프레드 시트의 여러 찾기 및 바꾸기를위한 Google Apps Script

  6. 6

    Google Apps Script의 스프레드 시트에서 JSON 값 전달

  7. 7

    Google 스프레드 시트의 경과 시간 및 분 합계

  8. 8

    Google Apps Script를 사용하여 Google 스프레드 시트의 값을 기반으로 날짜 선택기에서 날짜를 사용 중지합니다.

  9. 9

    두 목록의 Google 스프레드 시트 검색 및 합계

  10. 10

    Google 스프레드 시트 Apps Script가 탭을 숨기지 않음

  11. 11

    Google Apps Script를 사용하여 Google 설문지에 Google 스프레드 시트의 임의의 텍스트를 표시하도록 할 수 있습니까?

  12. 12

    Google 스프레드 시트와 캘린더 간의 Apps Script에서 이중 예약을 방지하는 방법

  13. 13

    Google Apps Script (Google 스프레드 시트)는 자바 스크립트와 다르게 작동합니다.

  14. 14

    스프레드 시트를 복사 한 다음 새 스프레드 시트의 셀을 채우는 Google Apps Script

  15. 15

    Google Apps Script를 사용하여 Google 스프레드 시트에서 Google 문서 도구로 이미지 복사

  16. 16

    여러 Google 스프레드 시트를 하나의 시트로 병합

  17. 17

    여러 Google 스프레드 시트를 하나의 시트로 병합

  18. 18

    WorkBook의 다른 스프레드 시트에서 = UNIQUE 사용-Google Apps Script

  19. 19

    WorkBook의 다른 스프레드 시트에서 = UNIQUE 사용-Google Apps Script

  20. 20

    Google Apps Script-Gmail에서 이름으로 Google 스프레드 시트를 찾으려고합니다.

  21. 21

    Google Apps Script를 사용하여 Google 드라이브 또는 URL의 이미지를 Google 스프레드 시트에 삽입

  22. 22

    Google 시트 열의 레코드 병합

  23. 23

    Google Apps Script에서 특정 스프레드 시트를 공유하려면 어떻게해야합니까?

  24. 24

    Google Apps Script를 사용하여 스프레드 시트의 셀에서 텍스트를 자르려면 어떻게해야합니까?

  25. 25

    시트를 다른 스프레드 시트로 복사 [Google Apps Script]

  26. 26

    Apps Script를 사용하여 Google 스프레드 시트에서 특정 시트 범위의 보호되지 않은 모든 행을 삭제하는 방법

  27. 27

    Google 스프레드 시트에서 병합 된 셀의 높이 결정

  28. 28

    여러 Google 스프레드 시트 열을 하나의 열로 병합

  29. 29

    Google Apps Script 편지 병합에서 빈 이메일 건너 뛰기

뜨겁다태그

보관