Как получить адрес электронной почты из ячейки в Google Sheet/Google Script при отправке листа в формате PDF

Этот скрипт работает для меня, но мне нужно получить электронное письмо из значения именно в ячейке. Мой вопрос заключается в том, как заменить электронную почту из этого скрипта «[email protected]» электронной почтой из определенной ячейки листа, например «Счет! A2»

function emailPDF() {
    let token = ScriptApp.getOAuthToken();
    let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    spreadsheet.getSheetByName("Invoice");
    let spreadsheetId = spreadsheet.getId();
    let sheetId = spreadsheet.getSheetByName("Invoice").getSheetId();
    let sheetUrl = "https://docs.google.com/spreadsheets/d/" + spreadsheetId + "/export?" + "format=xlsx" + "&gid = " + sheetId + "&portrait=true" + "&exportFormat=pdf";
    let request = UrlFetchApp.fetch(sheetUrl, {
        headers: {
            'Authorization': 'Bearer ' + token
        }
    });
    let content = request.getContent();
    let message = {
        to: "[email protected]",
        subject: "Invoice",
        body: "Hello.",
        attachments: [{
            fileName: "Invoice.pdf",
            content: content,
            mimeType: "application/pdf"
        }]
    }
    MailApp.sendEmail(message);
    spreadsheet.getSheetByName("Invoice").activate();
}

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
69
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я смог сделать это с помощью приведенного ниже сценария:

Пожалуйста, найдите ссылку здесь для дальнейшего разъяснения

function onOpen() 
    {
      var ui = SpreadsheetApp.getUi();
      ui.createMenu('GetValues')
          .addItem('get current', 'getCurrentCellValue')
          .addItem('get by row col', 'getByRowAndColumn')
          .addItem('get by address a1', 'getByCellAddressA1Notation')
          .addToUi();
    }
    
    function getCurrentCellValue()
    {
      var cell = SpreadsheetApp.getActiveSheet().getActiveCell();
      var a1 = cell.getA1Notation();
      var val = cell.getValue();
      
      SpreadsheetApp.getUi().alert("The active cell "+a1+" value is "+val);
    }
    
    function getByRowAndColumn()
    {
      var ui = SpreadsheetApp.getUi();
      
      var response = ui.prompt(
          'Cell address',
        'Please enter the cell address in this format: row,col for example, 5,2 means row 5 col 2',
          ui.ButtonSet.OK);
      
      var resp_text = response.getResponseText();
      
      var match = resp_text.match(/^(\d+)\,(\d+)/);
      
      
      var row = parseInt(match[1]);
      var col = parseInt(match[2]);
      var value = SpreadsheetApp.getActiveSheet().getRange(row,col).getValue();
    
      
      SpreadsheetApp.getUi().alert("The value is "+value);
    }
    
    function getByCellAddressA1Notation()
    {
      var ui = SpreadsheetApp.getUi();
      
      var response = ui.prompt(
          'Cell address',
          'Please enter the cell address (A1 notation)',
          ui.ButtonSet.OK);
      
      var a1 = response.getResponseText();
      
      var value = SpreadsheetApp.getActiveSheet().getRange(a1).getValue();
      
      ui.alert("cell value "+value);
    }

Спасибо. Я добавил SpreadsheetApp.getActiveSheet().getRange(a1).getValue(); вместо электронной почты и все.

igor.ognjanovic 24.11.2022 14:47

Другие вопросы по теме