Google scripts 1.Изначальный код ---------------------------------- function myFunction10() { // https://developers.google.com/apps-script/reference/mail/mail-app // Отправляем простое письмо MailApp.sendEmail({ to: 'mymail@gmail.com', // Email получателя письма subject: 'Тема письма', body: "Line 1\r\nLine 2\r\nLine 3", // Содержимое письма }); // Отправляем письмо с прикрепленным файлом // 1bPpy2Mm7sAffcZwSvuxOooPfrhfEWuE2 - ID Pdf файла, хранящегося на гугл диске var pdfFileBlob = DriveApp.getFileById( '1bPpy2Mm7sAffcZwSvuxOooPfrhfEWuE2' ).getBlob(); MailApp.sendEmail({ to: 'mymail@gmail.com', // Email получателя письма subject: 'Тема письма 2', body: "Line 1\r\nLine 2\r\nLine 3", // Содержимое письма // Прикрепляем файл attachments: [pdfFileBlob] }); } Мой код ------------------------------------ function myFunction() { let ss = SpreadsheetApp.getActiveSpreadsheet(); //активация таблицы let sheet = ss.getSheetByName('Лист1'); // нахождение нудной таблицы по названию let dataRange = sheet.getRange(2,1,4,3).getValues(); // нахождение диапазона ячеек(2 строка, 1 столбец, 4 кол-во строк, 3 кол-во столбцов) for(let i = 0; i < dataRange.length; i++){ // с помощью цикла происходит отправка писем, заканчивается на 4 (длина срок) let mail = dataRange[i][0]; let ru = dataRange[i][1]; let en = dataRange[i][2]; MailApp.sendEmail(mail, ru, en, "Hello"); // Отправляем письмо внутри цикла }; // 1bPpy2Mm7sAffcZwSvuxOooPfrhfEWuE2 - ID Pdf файла, хранящегося на гугл диске var pdfFileBlob = DriveApp.getFileById( '18JhxnP1XHskmcSkjKXlGljAlKdrsVPGvuOUTxvHwVtI' ).getBlob(); MailApp.sendEmail({ to: 'andrei.tupitsin@gmail.com', // Email получателя письма subject: 'Тема письма 2', body: "Line 1\r\nLine 2\r\nLine 3", // Содержимое письма // Прикрепляем файл attachments: [pdfFileBlob] }); }2.Исходный код ------------------------------- // Функция onOpen() запускается автоматически при открытии документа // https://developers.google.com/apps-script/guides/triggers/#onopen function onOpen() { // Создаём новое меню // https://developers.google.com/apps-script/reference/base/ui#createmenucaption SpreadsheetApp.getUi() .createMenu('Custom Menu') .addItem('Show alert', 'showAlert') .addItem('Show prompt', 'showPrompt') .addToUi(); } function showAlert() { var ui = SpreadsheetApp.getUi(); // https://developers.google.com/apps-script/reference/base/ui#alerttitle-prompt-buttons var result = ui.alert( 'Подтвердите действие', // Заголовок окна 'Вы уверены, что хотите продолжить?', // Сообщение ui.ButtonSet.YES_NO // Кнопки ); if (result == ui.Button.YES) { // Пользователь нажал на "Да" // User clicked "Yes". ui.alert('Подтверждение получено.'); } else { // Пользователь нажал на "Нет" или на X (закрыл окно) ui.alert('В разрешении отказано.'); } } function showPrompt() { var ui = SpreadsheetApp.getUi(); // https://developers.google.com/apps-script/reference/base/ui#prompttitle-prompt-buttons var result = ui.prompt( 'Сообщите что-нибудь о себе!', // Заголовок 'Введите своё имя:', // Сообщение ui.ButtonSet.OK_CANCEL // Кнопки ); var button = result.getSelectedButton(); // Кнопка, на которую нажал пользователь var text = result.getResponseText(); // Текст, который ввёл пользователь if (button == ui.Button.OK) { ui.alert('Ваше имя: ' + text + '.'); } else if (button == ui.Button.CANCEL) { ui.alert('Вы отказались вводить своё имя.'); } else if (button == ui.Button.CLOSE) { ui.alert('Вы закрыли окно.'); } } Мой код --------------------------------- // Функция onOpen() запускается автоматически при открытии документа // https://developers.google.com/apps-script/guides/triggers/#onopen function onOpen() { // Создаём новое меню // https://developers.google.com/apps-script/reference/base/ui#createmenucaption SpreadsheetApp.getUi() .createMenu('Custom Menu') .addItem('Show alert', 'showAlert') .addItem('Show prompt', 'showPrompt') .addItem('Show prompt2', 'showPrompt2') .addToUi(); } function showAlert() { var ui = SpreadsheetApp.getUi(); // https://developers.google.com/apps-script/reference/base/ui#alerttitle-prompt-buttons var result = ui.alert( 'Подтвердите действие', // Заголовок окна 'Вы уверены, что хотите продолжить?', // Сообщение ui.ButtonSet.YES_NO // Кнопки ); if (result == ui.Button.YES) { // Пользователь нажал на "Да" // User clicked "Yes". ui.alert('Подтверждение получено.'); } else { // Пользователь нажал на "Нет" или на X (закрыл окно) ui.alert('В разрешении отказано.'); } } function showPrompt() { var ui = SpreadsheetApp.getUi(); // https://developers.google.com/apps-script/reference/base/ui#prompttitle-prompt-buttons var result = ui.prompt( 'Сообщите что-нибудь о себе!', // Заголовок 'Введите своё имя:', // Сообщение ui.ButtonSet.OK_CANCEL // Кнопки ); var button = result.getSelectedButton(); // Кнопка, на которую нажал пользователь var text = result.getResponseText(); // Текст, который ввёл пользователь if (button == ui.Button.OK) { ui.alert('Ваше имя: ' + text + '.'); } else if (button == ui.Button.CANCEL) { ui.alert('Вы отказались вводить своё имя.'); } else if (button == ui.Button.CLOSE) { ui.alert('Вы закрыли окно.'); } } function showPrompt2() { var ui = SpreadsheetApp.getUi(); // https://developers.google.com/apps-script/reference/base/ui#prompttitle-prompt-buttons var result = ui.prompt( 'Сколько вам лет', // Заголовок 'Возраст:', // Сообщение ui.ButtonSet.OK_CANCEL // Кнопки ); var button = result.getSelectedButton(); // Кнопка, на которую нажал пользователь var text = result.getResponseText(); // Текст, который ввёл пользователь if (button == ui.Button.OK) { ui.alert('Возраст: ' + text + '.'); } else if (button == ui.Button.CANCEL) { ui.alert('Отказ.'); } else if (button == ui.Button.CLOSE) { ui.alert('Вы закрыли окно.'); } }