Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Menghantar e-mel daripada Helaian Google memerlukan penggunaan Skrip Google Apps. Tetapi jangan risau, jika anda tidak pernah mencipta satu skrip Google Apps sebelum ini, menghantar e-mel adalah sangat mudah.

Dalam tutorial berikut, anda akan belajar cara menyemak nilai sel dalam Helaian Google . Jika nilai melebihi had ambang tertentu, anda boleh menghantar e-mel makluman secara automatik ke mana-mana alamat e-mel yang anda suka.

Terdapat banyak kegunaan untuk skrip ini. Anda boleh menerima makluman jika pendapatan harian dalam laporan jualan anda menurun di bawah tahap tertentu. Atau anda boleh menerima e-mel jika pekerja anda melaporkan bahawa mereka telah mengebil pelanggan untuk terlalu banyak jam dalam hamparan penjejakan projek anda.

Tidak kira aplikasinya, skrip ini menarik. Ia juga akan menjimatkan masa anda untuk memantau kemas kini hamparan anda secara manual.

Langkah 1: Menghantar E-mel dengan Helaian Google

Sebelum anda boleh membuat Skrip Google Apps untuk menghantar e-mel daripada Helaian Google , anda juga memerlukan alamat e-mel Gmail, yang akan diakses oleh Skrip Google Apps untuk menghantar e-mel makluman anda.

Anda juga perlu membuat hamparan baharu yang mengandungi alamat e-mel.

Cuma tambahkan lajur nama dan lajur e-mel, dan isikannya dengan orang yang anda mahu terima e-mel makluman.

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Memandangkan anda mempunyai alamat e-mel untuk menghantar e-mel makluman, tiba masanya untuk mencipta skrip anda.

Untuk masuk ke editor skrip, klik pada Alat , dan kemudian klik Editor skrip .

Anda akan melihat tetingkap skrip dengan fungsi lalai yang dipanggil  myFunction() . Namakan semula ini kepada SendEmail() .

Seterusnya, tampal kod berikut di dalam fungsi SendEmail():

// Fetch the email address var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("B2"); var emailAddress = emailRange.getValues(); // Send Alert Email. var message = 'This is your Alert email!'; // Second column var subject = 'Your Google Spreadsheet Alert'; MailApp.sendEmail(emailAddress, subject, message);

Begini cara kod ini berfungsi:

  • getRange dan getValues ​​tarik nilai dari sel yang dinyatakan dalam kaedah getRange.
  • mesej var dan subjek var mentakrifkan teks yang akan membina e-mel makluman anda.
  • Fungsi MailApp.sendEmail akhirnya melaksanakan ciri penghantaran e-mel Skrip Google menggunakan akaun Google anda yang disambungkan.

Simpan skrip dengan mengklik ikon cakera , dan kemudian jalankannya dengan mengklik ikon jalankan (anak panah kanan).

Perlu diingat bahawa Skrip Google memerlukan kebenaran untuk mengakses akaun Gmail anda untuk menghantar e-mel. Jadi pada kali pertama anda menjalankan skrip, anda mungkin melihat makluman seperti di bawah.

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Klik pada Kebenaran Semakan , dan anda akan melihat skrin makluman lain yang anda perlu memintas.

Skrin amaran ini adalah kerana anda sedang menulis Skrip Google tersuai yang tidak didaftarkan sebagai Skrip rasmi.

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Cuma klik pada Advanced , dan kemudian klik pautan Pergi ke SendEmail (tidak selamat) .

Anda hanya perlu melakukan ini sekali sahaja. Skrip anda akan dijalankan dan alamat e-mel yang anda tentukan dalam hamparan anda akan menerima e-mel seperti di bawah.

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Langkah 2: Membaca Nilai Daripada Sel dalam Helaian Google

Memandangkan anda telah berjaya menulis Skrip Google Apps yang boleh menghantar e-mel makluman, tiba masanya untuk menjadikan e-mel makluman itu lebih berfungsi.

Langkah seterusnya yang akan anda pelajari ialah cara membaca nilai data daripada Hamparan Google, menyemak nilai dan mengeluarkan mesej pop timbul jika nilai tersebut melebihi atau di bawah had atas.

Sebelum anda boleh melakukan ini, anda perlu membuat helaian lain dalam Hamparan Google yang anda sedang bekerjasama. Panggil helaian baharu ini “MyReport.”

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Perlu diingat bahawa sel D2 ialah sel yang anda ingin semak dan bandingkan. Bayangkan anda ingin tahu setiap bulan sama ada jumlah jualan anda telah menurun di bawah $16,000.

Mari buat Skrip Google Apps yang melakukan perkara itu.

Kembali ke tetingkap Editor Skrip anda dengan mengklik pada Alat dan kemudian Editor Skrip .

Jika anda menggunakan hamparan yang sama, anda masih mempunyai fungsi  SendEmail() di sana. Potong kod itu dan tampalkannya ke Notepad. Anda akan memerlukannya nanti.

Tampalkan fungsi berikut ke dalam tetingkap kod.

function CheckSales() { // Fetch the monthly sales var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MyReport").getRange("D2"); var monthSales = monthSalesRange.getValue(); var ui = SpreadsheetApp.getUi(); // Check totals sales if (monthSales < 16000){="" ui.alert('sales="" too="" low!');="" }="">

Cara kod ini berfungsi:

  • Muatkan nilai dari sel D2 ke dalam pembolehubah monthSales .
  • Penyata IF membandingkan jualan bulanan dalam sel D2 kepada $16,000
  • Jika nilainya melebihi 16,000, kod tersebut akan mencetuskan kotak mesej penyemak imbas dengan amaran.

Simpan kod ini dan jalankannya. Jika ia berfungsi dengan betul, anda seharusnya melihat mesej amaran berikut dalam penyemak imbas anda.

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Memandangkan anda mempunyai Skrip Google Apps yang boleh menghantar makluman e-mel dan skrip lain yang boleh membandingkan nilai daripada hamparan, anda sudah bersedia untuk menggabungkan kedua-duanya dan menghantar makluman dan bukannya mencetuskan mesej makluman.

Langkah 3: Menyatukan Semuanya

Kini tiba masanya untuk menggabungkan dua skrip yang telah anda buat menjadi satu skrip.

Pada ketika ini, anda sepatutnya mempunyai hamparan dengan tab yang dipanggil Helaian1 yang mengandungi penerima e-mel makluman. Tab lain yang dipanggil MyReport mengandungi semua maklumat jualan anda.

Kembali dalam Editor Skrip, sudah tiba masanya untuk mempraktikkan semua yang anda pelajari setakat ini.

Gantikan semua kod dalam editor skrip dengan dua fungsi anda, diedit seperti yang ditunjukkan di sini.

function CheckSales() { // Fetch the monthly sales var monthSalesRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("MyReport").getRange("D2"); var monthSales = monthSalesRange.getValue(); // Check totals sales if (monthSales < 16000){="" fetch="" the="" email="" address="" var="" emailrange="SpreadsheetApp.getActiveSpreadsheet().getSheetByName(" sheet1").getrange("b2");"="" var="" emailaddress="emailRange.getValues();" send="" alert="" email.="" var="" message='This month your sales were ' +="" monthsales;="" second="" column="" var="" subject='Low Sales Alert' ;="" mailapp.sendemail(emailaddress,="" subject,="" message);="" }="">

Perhatikan suntingan di sini.

Di dalam pernyataan IF, tampalkan skrip SendEmail di dalam fungsi CheckSales() di dalam kurungan pernyataan if.

Kedua, gabungkan pembolehubah monthSales ke penghujung mesej e-mel menggunakan aksara + .

Satu-satunya perkara yang perlu dilakukan ialah mencetuskan fungsi CheckSales() setiap bulan.

Untuk melakukan ini, dalam editor skrip:

  1. Klik pada item menu Edit , dan kemudian klik pada Pencetus projek semasa .
  2. Di bahagian bawah skrin, klik pada buat pencetus baharu .
  3. Pilih fungsi CheckSales untuk dijalankan.
  4. Tukar Pilih sumber acara kepada dipacu masa .
  5. Tukar  Pilih jenis pencetus berdasarkan masa kepada Pemasa bulan .

Klik Simpan untuk memuktamadkan pencetus.

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Setiap bulan, skrip baharu anda akan dijalankan dan membandingkan jumlah jualan bulanan dalam sel D2 kepada $16,000.

Jika kurang, ia akan menghantar e-mel makluman yang memberitahu anda tentang jualan bulanan yang rendah.

Gunakan Helaian Google untuk Menghantar E-mel Berdasarkan Nilai Sel

Seperti yang anda lihat, Skrip Google Apps mengemas banyak fungsi dalam pakej kecil. Dengan hanya beberapa baris kod yang mudah, anda boleh melakukan beberapa perkara yang cukup menakjubkan.

Jika anda ingin mencuba lagi, cuba tambah had perbandingan $16,000 ke dalam sel lain dalam hamparan, kemudian baca itu ke dalam skrip anda sebelum membuat perbandingan. Dengan cara ini, anda boleh menukar had hanya dengan menukar nilai dalam helaian.

Dengan mengubah kod dan menambah blok kod baharu, anda boleh membina perkara mudah ini yang anda pelajari untuk membina beberapa Skrip Google yang menakjubkan akhirnya.

Mengautomasikan proses

Setakat ini bagus, tetapi skrip di atas hanya akan berjalan secara manual jika kami tidak menetapkan sebarang pencetus. Nasib baik, Google menjadikan automasi yang dicetuskan mudah untuk dikonfigurasikan. Berikut adalah langkah-langkahnya. 

Dalam editor Apps Skrip, klik ikon Pencetus di bar sisi kiri (ia kelihatan seperti jam kecil).

Klik buat pencetus baharupautan atau Tambah Pencetus butang di penjuru kanan sebelah bawah halaman Pencetus.

Dalam Pilih fungsi yang hendak dijalankan menu lungsur turun, pilih sendEmails< a i=4> fungsi.

Dalam Pilih sumber acara menu lungsur turun, pilih Didorong masa.

Dalam Pilih jenis pencetus berasaskan masa menu lungsur turun, pilih kekerapan yang anda mahu (mis., Pemasa hari untuk e-mel harian, Pemasa minggu untuk e-mel mingguan, dsb.).

Jika berkenaan, pilih julat masa atau hari dalam minggu yang diingini.

Klik Simpan untuk mencipta pencetus.

Selepas menyimpan, klik butang di penjuru kanan sebelah atas dan ikut arahan untuk melabel dan mentakrifkan penggunaan. Anda perlu memberikan kebenaran automasi untuk dijalankan, dan perkara yang sama berlaku untuk skrip itu sendiri.  

Bagi pencetus yang diberikan, memandangkan contoh kami adalah tentang menghantar peringatan invois, kami menganggap ini adalah setiap bulan dan adalah wajar untuk menghantarnya setiap 1 haribulan antara 1 petang dan 2 petang. Tetapi sudah tentu, anda boleh menukar kekerapan dan masa berdasarkan keperluan anda. 

Cara menghantar e-mel dengan lampiran

Untuk menunjukkan kepada anda cara menghantar e-mel dengan lampiran, kami akan menggunakan semula helaian teladan dengan peringatan invois dan memfaktorkan semula coretan untuk memasukkan lampiran. Sekarang, kita mulakan dengan fungsi dan templat e-mel datang kemudian dalam kod. hantarEmelPeringatan

Kita harus menyerlahkan bahawa coretan di bawah menarik lampiran e-mel daripada folder Google Drive, yang penting untuk memasukkan ID folder dan mengikut konvensyen penamaan yang diberikan. Lebih lanjut mengenai itu di bawah Mari kita pecahkan bahagian kod

function sendEmailReminders() { // Dapatkan helaian aktif var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Dapatkan julat data (tidak termasuk baris pengepala) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Dapatkan nilai daripada julat data var data = dataRange.getValues(); // Gelung melalui baris data untuk (var i = 0; i < data.length; i++) { var row = data[i]; // Dapatkan nilai daripada setiap lajur var businessName = row[0]; var e-mel = baris[1]; var invoiceNumber = baris[2]; var invoiceAmount = baris[3]; var dueDate = baris[4]; var subjek = baris[5]; // Badan e-mel var emailBody = "Sayang " + nama perniagaan + ",\n\n" + "Ini adalah peringatan bahawa Invois #" + Nombor invois + " untuk $" + invoisAmount + " dijangka pada " + tarikh tamat + ".\n" + "Sila cari invois yang dilampirkan.\n\n" + "Terima kasih atas perhatian segera anda terhadap perkara ini."; // Lampirkan invois yang sepadan - Anda perlu memberikan ID folder yang betul tempat invois anda disimpan var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(nombor invois + '.pdf'); // Andaikan fail invois berada dalam format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Jika fail invois tidak ditemui, anda boleh melangkau baris ini atau log konsol ralat.error("Fail invois tidak ditemui untuk nombor invois: " + Nombor invois); teruskan; } // Hantar e-mel dengan lampiran MailApp.sendEmail({kepada: e-mel, subjek: subjek, badan: emailBody, lampiran: [invoiceFile] }); } }

Mari pecahkan kod

1. Tentukan fungsi:sendEmailReminders

function sendEmailReminders() {

Baris itu mengisytiharkan fungsi bernama , yang akan mengandungi kod untuk menghantar peringatan e-mel dengan lampiran.sendEmailReminders

2. Dapatkan helaian aktif:

var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

Baris itu mendapatkan semula helaian aktif daripada dokumen Helaian Google yang sedang dibuka.

3. Dapatkan julat data (tidak termasuk baris pengepala):

var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());

Baris ini mendapat julat data dalam helaian, tidak termasuk baris pengepala. Ia bermula dari baris kedua (baris 2) dan lajur pertama (lajur 1) dan meluas ke baris terakhir dan lajur terakhir helaian.

Nota Sampingan: Apabila anda membuat helaian tersuai anda, anda perlu mengubah suai untuk sepadan dengan helaian anda. julat data

4. Dapatkan nilai daripada julat data:

var data = dataRange.getValues();

Baris ini mendapatkan semula nilai (kandungan) daripada julat sel yang ditakrifkan dalam langkah sebelumnya.

5. Gelung melalui baris data:

untuk (var i = 0; i < data.length; i++) { var row = data[i];

Gelung ini berulang melalui setiap baris dalam tatasusunan. Pembolehubah mewakili baris data semasa dalam setiap lelaran.fordatarow

6. Dapatkan nilai daripada setiap lajur:

var businessName = baris[0]; var e-mel = baris[1]; var invoiceNumber = baris[2]; var invoiceAmount = baris[3]; var dueDate = baris[4]; var subjek = baris[5];

Baris di atas mengekstrak nilai daripada setiap lajur dalam baris data semasa. Setiap nilai kemudiannya diberikan kepada pembolehubah untuk rujukan mudah dalam skrip. Nilai yang diberikan adalah tersuai kepada helaian teladan kami. 

7. Buat badan e-mel:

var emailBody = "Sayang " + nama perniagaan + ",\n\n" + "Ini adalah peringatan bahawa Invois #" + Nombor invois + " untuk $" + invoisAmount + " dijangka pada " + tarikh tamat + ".\n" + "Sila cari invois yang dilampirkan.\n\n" + "Terima kasih atas perhatian segera anda terhadap perkara ini.";

Kod membina badan e-mel menggunakan nilai yang diekstrak daripada helaian. Badan e-mel ialah rentetan yang merangkumi nama perniagaan, nombor invois, jumlah invois dan tarikh akhir.

8. Dapatkan fail invois yang sepadan:

var invoiceFolderId = 'ID_FOLDER_ANDA_DI SINI'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(nombor invois + '.pdf'); var invoiceFail; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { console.error("Fail invois tidak ditemui untuk nombor invois: " + Nombor invois); teruskan; }

Baris ini mendapatkan semula fail invois yang dikaitkan dengan baris semasa. 

Pertama, folder fail invois diakses menggunakan ID foldernya. Pastikan anda menggantikan dengan ID folder sebenar. YOUR_FOLDER_ID_HERE

Harap maklum bahawa konvensyen penamaan dalam contoh kami ialah  dan invois sebenar dinamakan ‘123456.pdf’. Jika fail lampiran anda dinamakan berbeza, anda perlu mengemas kini pemformatan. (Nombor invois + '.pdf')

Seterusnya, skrip mencari fail dengan nama yang sama dengan nombor invois (dengan mengandaikan fail itu dalam format PDF). 

Jika fail ditemui, ia diperuntukkan kepada pembolehubah; jika tidak, skrip log mesej ralat dan bergerak ke baris seterusnya.invoiceFile

9. Hantar e-mel dengan lampiran:

MailApp.sendEmail({kepada: e-mel, subjek: subjek, badan: emailBody, lampiran: [invoiceFale] });

Baris ini menghantar badan dan lampiran e-mel, dan berikut ialah hasil yang perlu anda perolehi. Selain itu, semua langkah automasi digunakan seperti yang diterangkan sebelum ini, dan wajar untuk mengekalkan pencetus bulanan kerana ini adalah mengenai menghantar peringatan invois. 

Hantar e-mel HTML dengan GSheets

Untuk menghantar e-mel HTML, anda boleh membuat beberapa, agak mudah, pengubahsuaian pada skrip yang diterangkan sebelum ini. Ini dia: 

function sendEmailReminders() { // Dapatkan helaian aktif var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Dapatkan julat data (tidak termasuk baris pengepala) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Dapatkan nilai daripada julat data var data = dataRange.getValues(); // Gelung melalui baris data untuk (var i = 0; i < data.length; i++) { var row = data[i]; // Dapatkan nilai daripada setiap lajur var businessName = row[0]; var e-mel = baris[1]; var invoiceNumber = baris[2]; var invoiceAmount = baris[3]; var dueDate = baris[4]; var subjek = baris[5]; // Badan e-mel HTML var emailBodyHtml = "<p>Sayang " + nama perniagaan + ",</p>" + "<p>Ini ialah peringatan bahawa Invois #" + Nombor invois + " untuk $" + invoisAmount + " dijangka pada " + tarikh tamat + ".</p>" + "<p>Sila cari invois yang dilampirkan.</p>" + "<p>Terima kasih atas perhatian segera anda terhadap perkara ini.</p>"; // Lampirkan invois yang sepadan - Anda perlu memberikan ID folder yang betul tempat invois anda disimpan var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(nombor invois + '.pdf'); // Andaikan fail invois berada dalam format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Jika fail invois tidak ditemui, anda boleh melangkau baris ini atau log konsol ralat.error("Fail invois tidak ditemui untuk nombor invois: " + Nombor invois); teruskan; } // Hantar e-mel dengan lampiran MailApp.sendEmail({ kepada: e-mel, subjek: subjek, htmlBody: emailBodyHtml, lampiran: [invoiceFile] }); } }

Dalam versi ini, teks biasa digantikan dengan pembolehubah yang mengandungi kandungan berformat HTML. emailBodyemailBodyHtml

Apabila memanggil fungsi, sifat badan juga digantikan dengan sifat, yang akan menghantar e-mel sebagai e-mel HTML.MailApp.sendEmail()htmlBody

Nota Sampingan: 

Kami menggunakan bukannya dalam skrip demi kemudahan. Mana-mana pilihan akan berfungsi, walaupun pasti, lebih mudah dibaca. Walau apa pun, sila format semula skrip dan gantikan operator penggabungan dengan pemegang tempat pada interpolasi rentetan. varconstconst${expression}

Selain itu, tiada satu pun skrip yang menyertakan fungsi kerana ini tidak diperlukan untuk contoh kami. Tetapi sudah tentu, anda juga boleh menambah, dan juga mengautomasikan, dengan jenis skrip ini. bccbcc

Akhir sekali, anda boleh menyerikan lagi dengan menambahkan gaya CSS tersuai, lihat fungsi yang dikemas kini di bawah. var emailBodyHtml =

// Badan e-mel HTML dengan gaya CSS var emailBodyHtml = "<html><head><style>" + "badan {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".info-invois {font-weight: bold; warna: #4a4a4a;}" + "</style></kepala><badan>" + "<p><span class='invois-info'>" + businessName + "</span>,</p>" + "<p>Ini ialah peringatan bahawa Invois #<span class='invois-info'>" + Nombor invois + "</span> untuk $<kelas span='invois-info'>" + invoiceAmount + "</span> perlu dibayar pada <span class='invois-info'>" + tarikh akhir + "</span>.</p>" + "<p>Sila cari invois yang dilampirkan.</p>" + "<p>Terima kasih atas perhatian segera anda terhadap perkara ini.</p>" + "</body></html>";

Petua Pro: 

  • Bertenang dengan , sesetengah pembekal peti mel mungkin tidak menyokong dan memaparkan e-mel yang sangat bergaya dengan betul atau sama sekali. <gaya>
  • Gunakan Mailtrap Email Testing untuk melihat jumlah penyedia peti mel menyokong e-mel HTML anda. 
  • Untuk menekankan sekali lagi, Jika anda perlu menghantar pada volum, sebaiknya gunakan MTA yang betul dan bukannya fungsi. hantarEmel
  • Pada nota itu, ingat had akaun Gmail anda. Ini berbeza untuk Google Workspace dan/atau akaun peribadi anda. 

Bagaimana untuk menghantar e-mel pencetus daripada Helaian Google?

Apabila sel mencapai nilai tertentu

Kami akan menunjukkan kepada anda cara menghantar e-mel automatik berdasarkan nilai sel. Dalam contoh kami, invois akan dihantar apabila sel Jumlah Invois mencapai '0' yang menunjukkan pelanggan yang dikocok. 

Nilai sel yang diberikan mencetuskan e-mel churn tersuai untuk segera menghubungi pelanggan. Dan sekali lagi, langkah automasi kekal sama, anda masih boleh menggunakan pencetus bulanan untuk e-mel ini. 

Perlu diingat bahawa skrip adalah sama yang kami gunakan untuk menghantar e-mel dan lampiran HTML. Tetapi ia mempunyai satu lagi lapisan fungsi untuk memperkenalkan logik bersyarat yang diterangkan. Inilah kodnya. 

function sendEmailReminders() { // Dapatkan helaian aktif var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // Dapatkan julat data (tidak termasuk baris pengepala) var dataRange = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn()); // Dapatkan nilai daripada julat data var data = dataRange.getValues(); // Gelung melalui baris data untuk (var i = 0; i < data.length; i++) { var row = data[i]; // Dapatkan nilai daripada setiap lajur var businessName = row[0]; var e-mel = baris[1]; var invoiceNumber = baris[2]; var invoiceAmount = baris[3]; var dueDate = baris[4]; var subjek = baris[5]; // Tentukan badan e-mel berdasarkan jumlah invois var emailBodyHtml; if (InvoiceAmount == 0) { // Churn subjek e-mel pelanggan = "Churn customer notification"; emailBodyHtml = "<html><kepala><gaya>" + "badan {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".info-invois {font-weight: bold; warna: #4a4a4a;}" + "</style></kepala><badan>" + "<p>Sayang " + nama perniagaan + ",</p>" + "<p>Kami mendapati bahawa jumlah invois anda ialah $0. Kami kesal melihat anda pergi dan akan menghargai sebarang maklum balas tentang sebab anda telah memutuskan untuk berhenti menggunakan perkhidmatan kami.</p>" + "<p>Jika ada apa-apa yang boleh kami lakukan untuk meningkatkan perkhidmatan kami atau memenangi semula perniagaan anda, sila beritahu kami.</p>" + "<p>Terima kasih atas perniagaan anda yang lalu.</p>" + "</body></html>"; } else { // E-mel invois biasa e-melBodyHtml = "<html><head><style>" + "badan {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".info-invois {font-weight: bold; warna: #4a4a4a;}" + "</style></kepala><badan>" + "<p><span class='invois-info'>" + businessName + "</span>,</p>" + "<p>Ini ialah peringatan bahawa Invois #<span class='invois-info'>" + Nombor invois + "</span> untuk $<kelas span='invois-info'>" + invoiceAmount + "</span> perlu dibayar pada <span class='invois-info'>" + tarikh akhir + "</span>.</p>" + "<p>Sila cari invois yang dilampirkan.</p>" + "<p>Terima kasih atas perhatian segera anda terhadap perkara ini.</p>" + "</body></html>"; } // Lampirkan invois yang sepadan - Anda perlu memberikan ID folder yang betul tempat invois anda disimpan var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(nombor invois + '.pdf'); // Andaikan fail invois berada dalam format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.seterusnya(); } else { // Jika fail invois tidak ditemui, anda boleh melangkau baris ini atau log konsol ralat.error("Fail invois tidak ditemui untuk nombor invois: " + Nombor invois); teruskan; } // Hantar e-mel dengan lampiran MailApp.sendEmail({ kepada: e-mel, subjek: subjek, htmlBody: emailBodyHtml, lampiran: [invoiceFile] }); } }

Turun ke pemecahan kod 

Harap maklum bahawa kami hanya menumpukan pada perkara yang terdapat dalam fungsi untuk mengelak daripada mengulangi perkara yang telah diterangkan. emailBodyHtml

Bahagian kod yang dikemas kini menentukan kandungan badan e-mel berdasarkan jumlah invois. Jika jumlah invois ialah , ia diandaikan sebagai pelanggan churn dan templat e-mel yang berbeza digunakan. Berikut ialah pecahan kod: '0'

var emailBodyHtml;

Ia mengisytiharkan pembolehubah bernama dan menyimpan kandungan badan e-mel. Dan pada mulanya dibiarkan tidak ditentukan.emailBodyHtml

jika (Amaun invois == 0) { ... }

Penyata menyemak sama ada amaun invois ialah 0. Jika ya, kod dalam kurung kurawal akan dilaksanakan. Blok ini mengandungi templat e-mel pelanggan churn.if(`{}`)

subjek = "Churn pelanggan pemberitahuan";

Baris menetapkan subjek e-mel kepada untuk pelanggan churn."Churn pelanggan pemberitahuan"

emailBodyHtml = "<html><kepala><gaya>" + ...

 Baris menetapkan nilai pembolehubah kepada templat e-mel pelanggan churn. Templat ialah rentetan HTML dengan gaya CSS yang ditakrifkan dalam bahagian. Badan e-mel mengandungi ruang letak untuk nama perniagaan dan mesej kepada pelanggan.emailBodyHtml<head>

} lain { ... }

Sekatan dilaksanakan apabila amaun invois bukan 0. Ia menetapkan pembolehubah kepada templat e-mel invois biasa. Templat e-mel ialah rentetan HTML dengan gaya CSS yang ditakrifkan dalam bahagian. Badan e-mel mengandungi pemegang tempat untuk nama perniagaan, nombor invois, amaun invois dan tarikh tamat tempoh.elseemailBodyHtml<head>

Dengan menggunakan logik bersyarat ini, skrip menghantar badan e-mel yang berbeza berdasarkan sama ada amaun invois adalah (pelanggan churn) atau bukan sifar (invois biasa). 0

Apabila nilai sel berubah

Sekarang, kami akan mengambil skrip yang sama yang digunakan di atas dan melanjutkannya untuk meliputi kes penggunaan yang lain - peningkatan pelanggan dan pengurus akaun perlu menghantar e-mel "Terima Kasih" dengan invois. 

Untuk menjelaskan, ideanya ialah setiap bulan pengurus akaun mempunyai Helaian baharu (Helaian 2 dalam contoh kami) dengan bukti kelayakan pelanggan. 

Kod tersebut kini akan membandingkan dua helaian dan menghantar e-mel "Terima kasih" automatik, bukannya e-mel invois biasa, kepada pelanggan yang menaik taraf ( Jumlah Invois mereka a> lebih besar berbanding yang sebelumnya). 

Selain itu, tidak perlu menyentuh e-mel churn, kerana ada kemungkinan seseorang memutuskan untuk berhenti menggunakan perkhidmatan khayalan kami. Inilah skripnya.

function sendEmailReminders() { var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2"); var dataRange1 = sheet1.getRange(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()); var dataRange2 = sheet2.getRange(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()); var data1 = dataRange1.getValues(); var data2 = dataRange2.getValues(); untuk (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var row2 = data2[i]; var businessName = baris1[0]; e-mel var = baris1[1]; var invoiceNumber = baris1[2]; var invoiceAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(',', 39;.')); var invoiceAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.')); if (isNaN(invoiceAmount1) || isNaN(invoiceAmount2)) { console.error("Amaun invois tidak sah untuk perniagaan: " + BusinessName + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2 ); teruskan; } var dueDate = baris1[4]; subjek var; var emailBodyHtml; if (invoiceAmount1 < invoiceAmount2) { console.log("Menghantar 'Terima kasih kerana Menaik taraf' e-mel ke " + e-mel + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoisAmount2); subjek = "Terima Kasih kerana Menaik taraf"; emailBodyHtml = "<html><body>" + "<p>Sayang " + nama perniagaan + ",</p>" + "<p>Terima kasih kerana menaik taraf! Kami menghargai perniagaan anda dan berharap dapat melayani anda.</p>" + "<p>Salam,</p>" + "<p>Syarikat Anda</p>" + "</body></html>"; MailApp.sendEmail({kepada: e-mel, subjek: subjek, htmlBody: emailBodyHtml }); } else if (invoiceAmount1 == 0) { console.log("Menghantar 'Churn customer notification' e-mel ke " + e-mel + ". invoiceAmount1: " + invoiceAmount1); subjek = "Churn pelanggan pemberitahuan"; emailBodyHtml = "<html><kepala><gaya>" + "badan {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".info-invois {font-weight: bold; warna: #4a4a4a;}" + "</gaya></kepala><badan>" + "<p>Sayang " + nama perniagaan + ",</p>" + "<p>Kami mendapati bahawa jumlah invois anda ialah $0. Kami kesal melihat anda pergi dan akan menghargai sebarang maklum balas tentang sebab anda telah memutuskan untuk berhenti menggunakan perkhidmatan kami.</p>" + "<p>Jika ada apa-apa yang boleh kami lakukan untuk meningkatkan perkhidmatan kami atau memenangi semula perniagaan anda, sila beritahu kami.</p>" + "<p>Terima kasih atas perniagaan anda yang lalu.</p>" + "</body></html>"; MailApp.sendEmail({kepada: e-mel, subjek: subjek, htmlBadan:emailBodyHtml }); } else { console.log("Menghantar 'Invois Reminder' e-mel ke " + e-mel + ". invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2); subjek = "Peringatan Invois"; emailBodyHtml = "<html><kepala><gaya>" + "badan {font-family: Arial, sans-serif;}" + "p {font-size: 14px;}" + ".info-invois {font-weight: bold; warna: #4a4a4a;}" + "</style></kepala><badan>" "<p>Yang dihormati <span class='invois-info'>" + businessName + "</span>,</p>" + "<p>Ini ialah peringatan bahawa Invois #<span class='invois-info'>" + Nombor invois + "</span> untuk $<kelas span='invois-info'>" + invoiceAmount1 + "</span> perlu dibayar pada <span class='invois-info'>" + tarikh akhir + "</span>.</p>" + "<p>Sila cari invois yang dilampirkan.</p>" + "<p>Terima kasih atas perhatian segera anda terhadap perkara ini.</p>" + "</body></html>"; // Lampirkan invois yang sepadan - Anda perlu memberikan ID folder yang betul tempat invois anda disimpan var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(nombor invois + '.pdf'); // Andaikan fail invois berada dalam format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Jika fail invois tidak ditemui, anda boleh melangkau baris ini atau log konsol ralat.error("Fail invois tidak ditemui untuk nombor invois: " + Nombor invois); teruskan; } MailApp.sendEmail({kepada: e-mel, subjek: subjek, htmlBody: emailBodyHtml, lampiran: [invoiceFile] }); } } }</p>" + "</body></html>"; // Lampirkan invois yang sepadan - Anda perlu memberikan ID folder yang betul tempat invois anda disimpan var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(nombor invois + '.pdf'); // Andaikan fail invois berada dalam format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Jika fail invois tidak ditemui, anda boleh melangkau baris ini atau log konsol ralat.error("Fail invois tidak ditemui untuk nombor invois: " + Nombor invois); teruskan; } MailApp.sendEmail({kepada: e-mel, subjek: subjek, htmlBody: emailBodyHtml, lampiran: [invoiceFile] }); } } }</p>" + "</body></html>"; // Lampirkan invois yang sepadan - Anda perlu memberikan ID folder yang betul tempat invois anda disimpan var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(nombor invois + '.pdf'); // Andaikan fail invois berada dalam format PDF var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // Jika fail invois tidak ditemui, anda boleh melangkau baris ini atau log konsol ralat.error("Fail invois tidak ditemui untuk nombor invois: " + Nombor invois); teruskan; } MailApp.sendEmail({kepada: e-mel, subjek: subjek, htmlBody: emailBodyHtml, lampiran: [invoiceFile] }); } } }

Turun ke pemecahan kod 

1. Skrip bermula dengan mendapatkan rujukan kepada kedua-dua Helaian1 dan Helaian2.

var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

2. Ia kemudian mendapatkan semula data daripada kedua-dua helaian, bermula dari baris kedua untuk mengecualikan pengepala.

var dataRange1 = sheet1.getRange(2, 1, sheet1.getLastRow() - 1, sheet1.getLastColumn()); var dataRange2 = sheet2.getRange(2, 1, sheet2.getLastRow() - 1, sheet2.getLastColumn()); var data1 = dataRange1.getValues(); var data2 = dataRange2.getValues();

3. Skrip berulang ke atas baris dalam kedua-dua helaian (dengan andaian bilangan baris adalah sama dalam kedua-dua helaian). Ia membandingkan jumlah invois daripada Helaian1 dan Helaian2 untuk setiap baris yang sepadan.

untuk (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var row2 = data2[i]; // Dapatkan amaun invois daripada kedua-dua helaian var invoiceAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' ,', '.')); var invoiceAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.'));

Salinan

4. Skrip kemudian menyemak syarat untuk menghantar jenis e-mel yang berbeza berdasarkan perbandingan jumlah invois daripada Helaian1 dan Helaian2.

if (invoiceAmount1 < invoiceAmount2) { // Hantar "Terima Kasih kerana Menaik taraf" e-mel } lain jika (invoiceAmount1 == 0) { // Hantar "Churn pelanggan pemberitahuan" e-mel } lain { // Hantar "Peringatan Invois" e-mel }

Salinan

Perbandingan utama ialah , yang menyemak sama ada amaun invois dalam Helaian1 kurang daripada jumlah invois dalam Helaian2 untuk baris yang sama (iaitu, pelanggan yang sama). Jika benar, skrip menganggap pelanggan telah meningkatkan dan menghantar e-mel. Jika tidak, ia menyemak syarat lain (peringatan putar atau invois biasa) dan menghantar e-mel yang sesuai.jika (invoiceAmount1 < invoiceAmount2)"Terima Kasih kerana Menaik taraf"

Apabila fail Helaian Google dikemas kini

Kini, berbaloi untuk membincangkan sedikit kes penggunaan yang berbeza, di mana orang selain pengurus akaun mempunyai akses kepada hamparan. 

Katakan bahawa pengurus akaun kami mempunyai hari khusus untuk bertemu pelanggan dan menjawab soalan mereka. Pelanggan mempunyai akses kepada hamparan di mana mereka boleh menerangkan secara ringkas masalah dan menempah slot. 

Okey, terdapat cara yang lebih baik untuk mengendalikan tempahan dan pertanyaan pelanggan. Tetapi kami akan berpegang pada pendekatan ini demi tutorial.

Langkah 1

Pertama, kita perlu membuat jadual. Seperti yang ditunjukkan di bawah, baris kami agak mudah, mengandungi hanya tiga baris dengan Pengurus, slot Masa dan Pertanyaan.

Langkah 2

Seterusnya, anda memerlukan skrip Google untuk mencetuskan e-mel di mana-mana sahaja seseorang mengemas kini helaian dengan pertanyaan mereka, dengan itu menempah slot. Berikut adalah contoh. 

//@OnlyCurrentDoc function processEdit(e) { MailApp.sendEmail({ to: "[email protected]" ;, subjek: "Tempahan baharu -- slot masa pelanggan", kandungan: "Seorang pelanggan ada soalan untuk anda." }); }

Salinan

Untuk membantu anda memahami perkara yang berlaku, anda perlu membincangkan fungsi utama. 

  • //@OnlyCurrentDoc – anotasi ini menandakan bahawa anda mahu skrip dijalankan hanya dalam Helaian Google yang ditentukan. Mengalih keluar anotasi membolehkan skrip merentas fail anda yang lain. 
  • fungsi processEdit () – pencetus (kami akan sediakan dalam langkah seterusnya) menjalankan skrip dengan fungsi ini. Mudah sahaja, fungsi ini menetapkan proses untuk mendapatkan e-mel setiap kali seseorang mengemas kini helaian.
  • (e) – anotasi ini mewakili objek dengan data tentang suntingan. Ia mempunyai sifat julat untuk memberi isyarat bahawa julat, atau sel, telah diedit. 
  • MailApp – objek yang digunakan oleh fungsi untuk menyampaikan e-mel. 

Sebelum meneruskan, anda boleh menguji helaian dan kod. Jika anda menggunakan helaian teladan, hanya isikan salah satu sel di bawah lajur Pertanyaan dan jalankan skrip. E-mel akan tiba di peti masuk anda serta-merta, tetapi maklumlah, skrip belum diautomatikkan lagi.

Langkah 3

Sudah tiba masanya untuk menetapkan dan membenarkan pencetus untuk menghantar e-mel secara automatik. Dalam Skrip Apps, klik ikon jam penggera dalam menu sisi. Kemudian, klik “…buat pencetus baharu”. 

Dalam pop timbul konfigurasi pencetus, pilih kriteria berikut.

  • prosesSunting
  • kepala
  • Daripada hamparan
  • Pada suntingan

Nota: Tidak mengapa jika anda menyimpan Tetapan pemberitahuan kegagalan secara lalai, tetapi anda boleh menukar itu jika perlu. Ia tidak akan menjejaskan kerja keseluruhan pencetus atau skrip. Ini boleh digunakan pada mana-mana skrip Google yang mungkin anda mahu automasi. 

Klik Simpan, benarkan pencetus pada akaun anda dan anda akan melihatnya dalam  Pencetus senarai. Selain itu, pastikan untuk menekan butang Gunakan untuk mengaktifkan pencetus. 

Kini, anda boleh kembali ke helaian, mengisi sel lain dalam lajur Pertanyaan dan semak sama ada anda menerima pemberitahuan automatik. 

Nota Sampingan: Anda boleh menyesuaikan helaian mengikut pilihan anda, tetapi ini bermakna anda juga perlu menyesuaikan skrip.

Tags: #HOW-TO

Halia 2.7.53.0

Halia 2.7.53.0

Halia ialah penyemak ejaan dan tatabahasa percuma.

Blok

Blok

Blocks ialah permainan intelektual untuk pelajar sekolah rendah gred 3 untuk mempraktikkan kemahiran pengesanan dan mata mereka dan disertakan oleh guru dalam program sokongan pengajaran IT.

Prezi 6.26

Prezi 6.26

Prezi ialah aplikasi percuma yang membolehkan anda membuat persembahan digital, dalam talian dan luar talian.

Mathway

Mathway

Mathway ialah apl yang sangat berguna yang boleh membantu anda menyelesaikan semua masalah matematik yang memerlukan alat yang lebih kompleks daripada kalkulator terbina dalam peranti anda.

Adobe Presenter

Adobe Presenter

Adobe Presenter ialah perisian e-Pembelajaran yang dikeluarkan oleh Adobe Systems yang tersedia pada platform Microsoft Windows sebagai pemalam Microsoft PowerPoint.

Toucan 2.3.0

Toucan 2.3.0

Toucan ialah platform teknologi pendidikan. Ia membolehkan anda mempelajari bahasa baharu semasa menyemak imbas tapak web biasa setiap hari.

ENetViet 24.2

ENetViet 24.2

eNetViet ialah aplikasi yang membantu menghubungkan ibu bapa dengan sekolah tempat anak mereka belajar supaya mereka dapat memahami dengan jelas situasi pembelajaran semasa anak mereka.

Duolingo

Duolingo

Duolingo - Belajar Bahasa Secara Percuma, atau ringkasnya Duolingo, ialah program pendidikan yang membolehkan anda mempelajari dan mengamalkan pelbagai bahasa.

RapidTyping

RapidTyping

RapidTyping ialah alat latihan papan kekunci yang mudah dan mudah digunakan yang akan membantu anda meningkatkan kelajuan menaip anda dan mengurangkan ralat ejaan. Dengan pelajaran yang dianjurkan untuk pelbagai peringkat, RapidTyping akan mengajar anda cara menaip atau meningkatkan kemahiran sedia ada.

MathType 7.4.10.53

MathType 7.4.10.53

MathType ialah perisian persamaan interaktif daripada pembangun Sains Reka Bentuk (Dessci), yang membolehkan anda mencipta dan menganotasi tatatanda matematik untuk pemprosesan perkataan, pembentangan, ePembelajaran, dll. Editor ini juga digunakan untuk mencipta dokumen TeX, LaTeX dan MathML.