Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

Google スプレッドシートからメールを送信するには、Google Apps Script を使用する必要があります。Google Apps スクリプトを 1 つも作成したことがない場合でも、メールの送信は非常に簡単です。

次のチュートリアルでは、Google スプレッドシートでセルの値を確認する方法を学習します。値が特定のしきい値制限を超えている場合、アラート メールを任意のメール アドレスに自動的に送信できます。

このスクリプトには多くの用途があります。販売レポートの毎日の収益が特定のレベルを下回った場合にアラートを受け取ることができます。または、従業員がプロジェクト追跡スプレッドシートでクライアントに請求した時間が長すぎると報告した場合に、メールを受け取ることもできます。

アプリケーションに関係なく、このスクリプトは説得力があります。また、スプレッドシートの���新を手動で監視する時間を節約できます。

ステップ 1: Google スプレッドシートでメールを送信する

Google スプレッドシートからメールを送信するための Google Apps Script を作成する前に、アラート メールを送信するために Google Apps Script がアクセスする Gmail メール アドレスも必要です。

また、メール アドレスを含む新しいスプレッドシートを作成する必要があります。

名前の列とメールの列を追加し、アラート メールを受信したい相手を入力するだけです。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

アラート メールを送信するメール アドレスを取得したので、次はスクリプトを作成します。

スクリプト エディタに入るには、[ツール] をクリックし、[スクリプト エディタ] をクリックします。

myFunction()というデフォルト関数を含むスクリプト ウィンドウが表示されます 。これをSendEmail()に名前変更します。

次に、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);

このコードの仕組みは次のとおりです。

  • getRangegetValuesは、getRange メソッドで指定されたセルから値を取得します。
  • var messagevar subjectは、アラート メールを作成するテキストを定義します。
  • MailApp.sendEmail関数は、接続された Google アカウントを使用して、最終的に Google スクリプトの電子メール送信機能を実行します。

ディスクアイコンをクリックしてスクリプトを保存し、実行アイコン (右矢印) をクリックしてスクリプトを実行します。

Google Script がメールを送信するには、Gmail アカウントにアクセスする権限が必要であることに注意してください。そのため、スクリプトを初めて実行すると、次のようなアラートが表示される場合があります。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

Review Permissionsをクリックすると、バイパスする必要がある別の警告画面が表示されます。

このアラート画面は、正式なものとして登録されていないカスタム Google Script を作成しているためです。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

[ Advanced ] をクリックしてから、[ SendEmail (安全でない)に移動]リンクをクリックします。

これは一度だけ行う必要があります。スクリプトが実行され、スプレッドシートで指定したメール アドレスに次のようなメールが届きます。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

ステップ 2: Google スプレッドシートのセルから値を読み取る

アラート メールを送信できる Google Apps スクリプトを正常に作成できたので、今度はそのアラート メールをより機能的にします。

次に学習するステップは、Google スプレッドシートからデータ値を読み取り、値をチェックし、その値が上限を上回っているか下回っている場合にポップアップ メッセージを発行する方法です。

これを行う前に、作業中の Google スプレッドシートで別のシートを作成する必要があります。この新しいシートを「MyReport」と呼びます。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

セル D2 は、確認して比較するセルであることに注意してください。総売上が 16,000 ドルを下回ったかどうかを毎月知りたいとします。

それを行う Google Apps Script を作成しましょう。

[ツール]、[スクリプト エディタ] の順にクリックして、[スクリプトエディタ] ウィンドウに戻ります。

同じスプレッドシートを使用している場合は、まだ SendEmail()関数が含まれています。そのコードを切り取り、メモ帳に貼り付けます。後で必要になります。

次の関数をコード ウィンドウに貼り付けます。

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!');="" }="">

このコードの仕組み:

  • セルD2の値をmonthSales変数に読み込みます。
  • IF ステートメントは、セル D2 の月間売上高を $16,000 と比較します。
  • 値が 16,000 を超える場合、コードはアラートを含むブラウザー メッセージ ボックスをトリガーします。

このコードを保存して実行します。正常に動作する場合、ブラウザに次の警告メッセージが表示されます。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

メール アラートを送信できる Google Apps スクリプトと、スプレッドシートの値を比較できる別のスクリプトが用意できたので、アラート メッセージをトリガーする代わりに、2 つを組み合わせてアラートを送信する準備が整いました。

ステップ 3: すべてをまとめる

ここで、作成した 2 つのスクリプトを 1 つのスクリプトに結合します。

この時点で、警告メールの受信者を含む Sheet1 というタブを含むスプレッドシートが作成されているはずです。MyReport と呼ばれるもう 1 つのタブには、すべての販売情報が含まれています。

スクリプト エディタに戻り、これまでに学んだことをすべて実践してみましょう。

スクリプト エディターのすべてのコードを、ここに示すように編集した 2 つの関数に置き換えます。

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);="" }="">

ここでの編集に注意してください。

IF ステートメント内で、if ステートメントの大括弧内のCheckSales()関数内にSendEmailスクリプトを貼り付けます。

次に、+文字を使用して、 monthSales変数を電子メール メッセージの末尾に連結します。

あとは、毎月 CheckSales() 関数をトリガーするだけです。

これを行うには、スクリプト エディターで次の操作を行います。

  1. [編集] メニュー項目をクリックし、[現在のプロジェクトのトリガー] をクリックします。
  2. 画面の下部にある [新しいトリガーの作成] をクリックします。
  3. 実行するCheckSales関数を選択します。
  4. Select event sourcetime-drivenに変更します。
  5. Select type of time based triggerMonth timerに変更 します。

[保存]をクリックしてトリガーを確定します。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

毎月、新しいスクリプトが実行され、セル D2 の月間総売上高が $16,000 と比較されます。

少ない場合は、月々の売り上げが低いことを知らせる警告メールが送信されます。

Google スプレッドシートを使用して、セルの値に基づいてメールを送信する

ご覧のとおり、Google Apps Scripts は小さなパッケージに多くの機能を詰め込んでいます。ほんの数行の単純なコードで、かなり驚くべきことができます。

さらに実験したい場合は、$16,000 の比較制限をスプレッドシートの別のセルに追加し、比較を行う前にそれをスクリプトに読み込んでみてください。このように、シートの値を変更するだけで制限を変更できます。

コードを微調整し、新しいコード ブロックを追加することで、これらの単純なことを学習して、最終的に素晴らしい Google スクリプトを構築することができます。

プロセスの自動化

ここまでは問題ありませんが、トリガーを設定しない場合、上記のスクリプトは手動でのみ実行されます。幸いなことに、Google はトリガーによる自動化を簡単に構成できるようにしました。手順は次のとおりです。 

Apps Script エディタで、左側のサイドバーにある トリガー アイコン (小さな時計のように見えます) をクリックします。

新しいトリガーの作成r] リンクをクリックするか、 [トリガーの追加] [トリガー] ページの右下隅にあるボタン。

 実行する機能の選択 ドロップダウン メニューで、 sendEmails< i=4> 関数。

 イベント ソースの選択 ドロップダウン メニューで、 時間駆動

 時間ベースのトリガーのタイプを選択 ドロップダウン メニューで、希望する頻度を選択します(例: 毎日のメールの場合は日タイマー 、毎週のメールの場合は 週タイマー など)。

該当する場合は、希望の時間範囲または曜日を選択します。

保存 ] をクリックしてトリガーを作成します。

保存後、右上隅にある デプロイ ボタンをクリックし、指示に従ってデプロイにラベルを付けて定義します。実行するにはオートメーションのアクセス許可を与える必要があり、スクリプト自体にも同じことが当てはまります。  

指定されたトリガーに関しては、この例は請求書のリマインダーの送信に関するものであるため、これらは毎月であると想定し、毎月 1 日の午後 1 時から午後 2 時までに送信するのが適切です。ただし、もちろん、必要に応じて頻度とタイミングを変更できます。 

添付ファイル付きのメールを送信する方法

添付ファイル付きの電子メールを送信する方法を示すために、請求書のリマインダーを含むサンプル シートを再利用し、添付ファイルを含めるようにスニペットをリファクタリングします。ここでは関数から始めます。メール テンプレートはコードの後半にあります。電子メールリマインダーの送信

以下のスニペットは Google ドライブ フォルダからメールの添付ファイルを取得することを強調する必要があります。ここではフォルダ ID を含め、指定された命名規則に従うことが重要です。詳細については、 コードを詳しく見てみましょうのセクションをご覧ください。 

function sendEmailReminders() { // アクティブなシートを取得します varsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // データ範囲を取得します(ヘッダー行を除く) var dataRange =sheet.getRange(2, 1,sheet.getLastRow() - 1,sheet.getLastColumn()); // データ範囲から値を取得します var data = dataRange.getValues(); // データ行をループします for (var i = 0; i < data.length; i++) { var row = data[i]; // 各列から値を取得します var businessName = row[0]; var email = 行[1]; var invoiceNumber = row[2]; var invoiceAmount = 行[3]; var dueDate = 行[4]; var subject = 行[5]; // メール本文 var emailBody = "親愛なる " + ビジネス名 + ",\n\n" + 「これは請求書番号についてのリマインダーです」 + 請求書番号 + "ドルで」 + 請求額 + "期限は「」です+ 期限 + ".\n" + "添付の請求書を見つけてください。\n\n" + "この件について迅速にご対応いただき、ありがとうございます。"; // 対応する請求書を添付します - 請求書が保存される正しいフォルダー ID を指定する必要があります var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); // 請求書ファイルが PDF 形式であると仮定します var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { // 請求書ファイルが見つからない場合は、この行をスキップするか、エラーをログに記録できます console.error("請求書番号の請求書ファイルが見つかりません: " + invoiceNumber);続く; } // 添付ファイル付きのメールを送信 MailApp.sendEmail({ to: email, subject: subject, body: emailBody,attachments: [invoiceFile] }); } }

コードを分解してみましょう

1. 関数を定義します:sendEmailReminders

関数 sendEmailReminders() {

この行では、 という名前の関数を宣言しています。この関数には、添付ファイル付きの電子メール リマインダーを送信するコードが含まれています。sendEmailReminders

2. アクティブなシートを取得します。

varsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

この行は、現在開いている Google スプレッドシート ドキュメントからアクティブ シートを取得します。

3. データ範囲を取得します (ヘッダー行を除く)。

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

この行は、ヘッダー行を除く、シート内のデータの範囲を取得します。シートの 2 行目 (行 2) と最初の列 (列 1) から始まり、最後の行と最後の列まで続きます。

補足: カスタム シートを作成するときは、シートに合わせて変更する必要があります。データ範囲

4. データ範囲から値を取得します。

var データ = dataRange.getValues();

この行は、前の手順で定義したセル範囲から値 (内容) を取得します。

5. データ行をループします。

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

このループは、配列内の各行を反復処理します。変数は、各反復の現在のデータ行を表します。fordatarow

6. 各列から値を取得します。

var businessName = row[0]; var email = 行[1]; var invoiceNumber = row[2]; var invoiceAmount = 行[3]; var dueDate = 行[4]; var subject = 行[5];

上の行は、データの現在の行の各列から値を抽出します。各値は後でスクリプト内で簡単に参照できるように変数に割り当てられます。指定された値は、この例のシートに合わせてカスタマイズされています。 

7. 電子メールの本文を作成します。

var emailBody = "親愛なる" + ビジネス名 + ",\n\n" + 「これは請求書番号についてのリマインダーです」 + 請求書番号 + "ドルで」 + 請求額 + "期限は「」です+ 期限 + ".\n" + "添付の請求書を見つけてください。\n\n" + "この件について迅速にご対応いただき、ありがとうございます。";

このコードは、シートから抽出された値を使用して電子メール本文を構築します。電子メールの本文は、会社名、請求書番号、請求金額、期日を含む文字列です。

8. 対応する請求書ファイルを取得します。

var invoiceFolderId = 'YOUR_FOLDER_ID_HERE'; var invoiceFolder = DriveApp.getFolderById(invoiceFolderId); var invoiceFiles = invoiceFolder.getFilesByName(invoiceNumber + '.pdf'); var invoiceFile; if (invoiceFiles.hasNext()) { invoiceFile = invoiceFiles.next(); } else { console.error("請求書番号の請求書ファイルが見つかりません: " + invoiceNumber);続く; }

これらの行は、現在の行に関連付けられた請求書ファイルを取得します。 

まず、フォルダ ID を使用して請求書ファイル フォルダにアクセスします。必ず実際のフォルダ ID に置き換えてください。 YOUR_FOLDER_ID_HERE

この例の命名規則は であり、実際の請求書の名前は「123456.pdf」であることに注意してください。添付ファイルの名前が異なる場合は、形式を更新する必要があります。 (請求書番号 + '.pdf')

次に、スクリプトは請求書番号と同じ名前のファイルを検索します (ファイルが PDF 形式であると仮定します)。 

ファイルが見つかった場合は、そのファイルが変数に割り当てられます。それ以外の場合、スクリプトはエラー メッセージをログに記録し、次の行に進みます。

9. 添付ファイルを含む電子メールを送信します。

MailApp.sendEmail({ 宛先: メール、件名: 件名、本文: メール本文、添付ファイル: [invoiceFile] });

この行は本文と電子メールの添付ファイルを送信します。得られる結果は次のとおりです。また、前述したようにすべての自動化手順が適用されます。これは請求書のリマインダーの送信に関するものであるため、毎月のトリガーを維持するのが合理的です。 

GSheets を使用して HTML メールを送信する

HTML 電子メールを送信するには、前に説明したスクリプトに非常に簡単な変更を加えることができます。ここにあります: 

function sendEmailReminders() { // アクティブなシートを取得します varsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // データ範囲を取得します(ヘッダー行を除く) var dataRange =sheet.getRange(2, 1,sheet.getLastRow() - 1,sheet.getLastColumn()); // データ範囲から値を取得します var data = dataRange.getValues(); // データ行をループします for (var i = 0; i < data.length; i++) { var row = data[i]; // 各列から値を取得します var businessName = row[0]; var email = 行[1]; var invoiceNumber = row[2]; var invoiceAmount = 行[3]; var dueDate = 行[4]; var subject = 行[5]; // HTML メール本文 var emailBodyHtml = "<p>様 " + ビジネス名 + ",</p"" + "<p>これは請求書番号"をお知らせするものです。 + 請求書番号 + "ドルで」 + 請求額 + "期限は「」です+ 期限 + ".

このバージョンでは、プレーンテキストが HTML 形式のコンテンツを含む変数に置き換えられます。 emailBodyemailBodyHtml

関数を呼び出すと、body プロパティもプロパティに置き換えられ、メールが HTML メールとして送信されます。MailApp.sendEmail()htmlBody

サイドノート: 

便宜上、スクリプトでは の代わりに を使用しています。どちらのオプションでも機能しますが、間違いなく、より読みやすくなります。とにかく、自由にスクリプトを再フォーマットし、文字列補間時に連結演算子をプレースホルダに置き換えてください。 varconstconst${式}

また、この例では必要ではなかったため、どのスクリプトにも関数は含まれていません。ただし、もちろん、この種のスクリプトを追加したり、自動化することも可能です。 bccbcc

最後に、カスタム CSS スタイルを追加して味を高めることができます。以下の更新された機能を参照してください。 var emailBodyHtml =

// CSS スタイルを使用した HTML メール本文 var emailBodyHtml = "<html><head><style"" + "body {font-family: Arial、sans-serif;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: 太字;色: #4a4a4a;}" + "" + "

プロのヒント: 

  • メールボックス プロバイダによっては、非常に様式化されたメールを適切にサポートまたは表示できない場合や、まったくサポートしていない場合もありますので、安心してご利用ください。 <スタイル>
  • Mailtrap Email Testing を使用して、メールボックス プロバイダが HTML メールをどの程度サポートしているかを確認します。 
  • もう一度強調しますが、 大量に送信する必要がある場合は、関数の代わりに適切な MTA を使用することが常に最善です。 電子メールを送信
  • その点で、Gmail アカウントの制限に注意してください。これらは、Google Workspace やプライベート アカウントでは異なります。 

Google スプレッドシートからトリガーメールを送信するにはどうすればよいですか?

セルが特定の値に達すると

セルの値に基づいて自動メールを送信する方法を説明します。この例では、請求書金額セルが解約された顧客を示す「0」に達すると請求書が送信されます。 

指定されたセル値により、カスタム チャーン電子メールがトリガーされ、顧客にすぐに連絡します。繰り返しになりますが、自動化の手順は同じままで、これらの電子メールに対して毎月のトリガーを引き続き使用できます。 

このスクリプトは、HTML 電子メールと添付ファイルの送信に使用したものと同じであることに注意してください。ただし、記述された条件付きロジックを導入するための別の機能層があります。コードは次のとおりです。 

function sendEmailReminders() { // アクティブなシートを取得します varsheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // データ範囲を取得します(ヘッダー行を除く) var dataRange =sheet.getRange(2, 1,sheet.getLastRow() - 1,sheet.getLastColumn()); // データ範囲から値を取得します var data = dataRange.getValues(); // データ行をループします for (var i = 0; i < data.length; i++) { var row = data[i]; // 各列から値を取得します var businessName = row[0]; var email = 行[1]; var invoiceNumber = row[2]; var invoiceAmount = 行[3]; var dueDate = 行[4]; var subject = 行[5]; // 請求金額に基づいてメール本文を決定します var emailBodyHtml; if (invoiceAmount == 0) { // 解約顧客のメール件名 = "解約顧客通知"; emailBodyHtml = "<html><head><style"" + "body {font-family: Arial、sans-serif;}" + "p {font-size: 14px;}" + ".invoice-info {font-weight: 太字;色: #4a4a4a;}" + "" + "

コードブレイクまで 

すでに説明した内容の繰り返しを避けるために、関数の内容のみに焦点を当てていることに注意してください。メール本文HTML

コードの更新された部分は、請求金額に基づいて電子メール本文の内容を決定します。請求金額が の場合、解約した顧客であるとみなされ、別のメール テンプレートが使用されます。コードの内訳は次のとおりです:「0」

var emailBodyHtml;

という名前の変数を宣言し、メール本文の内容を保存します。そして、最初は未定義のままです。

if (invoiceAmount == 0) { ... }

このステートメントは、請求額が 0 であるかどうかを確認します。0 である場合、中括弧内のコードが実行されます。このブロックには、解約顧客のメール テンプレートが含まれています。if(`{}`)

subject = "顧客離れに関する通知";

この行では、解約顧客向けにメールの件名を「解約顧客通知」に設定します。

emailBodyHtml = "<html><head><style"" + ...

 この行は、変数の値を解約顧客のメール テンプレートに設定します。テンプレートは、セクションで定義された CSS スタイルを含む HTML 文字列です。電子メールの本文には、ビジネス名のプレースホルダーと顧客へのメッセージが含まれています。

} それ以外 { ... }

このブロックは、請求金額が 0 でない場合に実行されます。変数を通常の請求書メール テンプレートに設定します。メール テンプレートは、セクションで定義された CSS スタイルを含む HTML 文字列です。電子メールの本文には、会社名、請求書番号、請求金額、期日のプレースホルダーが含まれています。elseemailBodyHtml<head>

この条件付きロジックを使用することにより、スクリプトは、請求額が(解約顧客)またはゼロ以外(通常の請求書)であ​​るかどうかに基づいて、異なるメール本文を送信します。 0

セルの値が変化したとき

ここで、上記で使用したものと同じスクリプトを拡張して、別のユースケース、つまりクライアントがアップグレードし、アカウント マネージャーが請求書とともに「ありがとう」メールを送信する必要がある場合をカバーします。 

説明すると、アカウント マネージャーが毎月、クライアントの資格情報を記載した新しいシート (この例ではシート 2) を作成するという考えです。 

コードは 2 つのシートを比較し、通常の請求書メールの代わりに、アップグレードしたクライアント ( 請求金額) に自動の「ありがとう」メールを送信します。 a> は前のものと比べて大きくなります)。 

また、誰かが当社の架空のサービスの使用を停止することを決定した可能性があるため、チャーンメールに触れる必要はありません。これがスクリプトです。

function sendEmailReminders() { varsheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); varsheet2 = 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(); for (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var row2 = データ2[i]; var businessName = row1[0]; var email = row1[1]; var invoiceNumber = row1[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("ビジネスの請求書金額が無効です: " + businessName + "。invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + invoiceAmount2 );続く; var dueDate = row1[4]; var サブジェクト; var emailBodyHtml; if (invoiceAmount1 < invoiceAmount2) { console.log("「アップグレードしていただきありがとうございます」メールを " + email + " に送信しています。invoiceAmount1: " + invoiceAmount1 + ", invoiceAmount2: " + 請求金額 2); subject = "アップグレードしていただきありがとうございます"; emailBodyHtml = "<html><body"" + "

コードブレイクまで 

1. スクリプトは、Sheet1 と Sheet2 の両方への参照を取得することから始まります。

varsheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1"); varsheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");

2. 次に、ヘッダーを除外するために 2 行目から始めて、両方のシートからデータを取得します。

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. スクリプトは両方のシートの行を反復処理します (両方のシートの行数が同じであると仮定します)。 Sheet1 と Sheet2 の対応する行ごとに請求額を比較します。

for (var i = 0; i < data1.length; i++) { var row1 = data1[i]; var row2 = データ2[i]; // 両方のシートから請求金額を取得します var invoiceAmount1 = parseFloat(row1[3].toString().replace('$', '').replace(' 、'、'.')); var invoiceAmount2 = parseFloat(row2[3].toString().replace('$', '').replace(',', 39;.'));

コピー

4. 次に、スクリプトは Sheet1 と Sheet2 の請求額の比較に基づいて、さまざまな種類の電子メールを送信するための条件をチェックします。

if (invoiceAmount1 < invoiceAmount2) { // 「アップグレードしていただきありがとうございます」を送信します。 email } else if (invoiceAmount1 == 0) { // 「顧客離脱通知」を送信します。 email } else { // 「請求書リマインダー」を送信します。 Eメール }

コピー

主な比較は、同じ行(つまり、同じ顧客)の Sheet1 の請求金額が Sheet2 の請求金額より小さいかどうかを確認することです。 true の場合、スクリプトは顧客がアップグレードしたと想定し、メールを送信します。それ以外の場合は、他の条件 (解約または定期的な請求書のリマインダー) がチェックされ、適切な電子メールが送信されます。

Google スプレッドシート ファイルが更新されたとき

ここで、アカウント マネージャー以外のユーザーがスプレッドシートにアクセスできる、少し異なる使用例について説明します。 

私たちのアカウントマネージャーが顧客と会い、質問に答えることに専念する 1 日を持っていると仮定しましょう。クライアントはスプレッドシートにアクセスして、問題を簡単に説明し、スロットを予約できます。 

そうですね、クライアントの予約や問い合わせを処理するもっと良い方法があります。ただし、チュートリアルではこのアプローチに固執します。

ステップ1

まず、テーブルを作成する必要があります。以下に示すように、私たちのものは非常に単純で、マネージャー、タイムスロット、およびクエリを含む 3 行のみが含まれています。

ステップ2

次に、誰かがクエリでシートを更新するたびに電子メールをトリガーし、スロットを予約する Google スクリプトが必要です。以下に例を示します。 

//@OnlyCurrentDoc function processEdit(e) { MailApp.sendEmail({ to: "[email protected]" ;、件名: "新しい予約 -- クライアントのタイムスロット"、本文: "クライアントから質問があります。" }); }

コピー

何が起こっているのかを理解するには、主な機能について説明することが重要です。 

  • //@OnlyCurrentDoc – このアノテーションは、指定された Google スプレッドシートでのみスクリプトを実行することを示します。注釈を削除すると、他のファイル全体でスクリプトが有効になりました。 
  • function processEdit ()  – トリガー (次のステップで設定します) は、この関数を使用してスクリプトを実行します。単純に、この関数は、誰かがシートを更新するたびにメールを受信するプロセスを設定します。
  • (e)  – この注釈は、編集に関するデータを含むオブジェクトを表します。範囲またはセルが編集されたことを通知する range プロパティがあります。 
  • MailApp – 関数がメールを中継するために使用するオブジェクト。 

次に進む前に、シートとコードをテストできます。例のシートを使用している場合は、「クエリ」列の下のセルの 1 つに値を入力し、スクリプトを実行するだけです。電子メールはすぐに受信箱に届くはずですが、スクリプトはまだ自動化されていないことに注意してください。

ステップ3

メールを自動的に送信するトリガーを設定して承認します。 Apps Script で、サイド メニューの目覚まし時計アイコンをクリックします。次に、[…新しいトリガーを作成] をクリックします。 

トリガー設定ポップアップで、次の基準を選択します。

  • プロセス編集
  • スプレッドシートから
  • 編集中

注: 障害通知設定 はデフォルトのままでも問題ありませんが、変更することもできます。必要に応じて。トリガーやスクリプトの全体的な動作には影響しません。これは、自動化したいあらゆる Google スクリプトに当てはまります。 

保存] をクリックし、アカウントでトリガーを承認すると、  にトリガーが表示されます。トリガー リスト。また、 デプロイ ボタンを押してトリガーを有効にしてください。 

ここで、シートに戻り、[クエリ] 列の別のセルに値を入力し、自動通知を受信したかどうかを確認できます。 

補足: 好みに合わせてシートをカスタマイズできますが、これはスクリプトも同様にカスタマイズする必要があることを意味します。

Tags: #HOW-TO

ジンジャー 2.7.53.0

ジンジャー 2.7.53.0

Ginger は無料のスペル チェッカーと文法チェッカーです。

ブロック

ブロック

Blocks は、小学校 3 年生向けの探知能力と視覚能力を訓練するための知的なゲームであり、教師による IT 指導支援プログラムに組み込まれています。

マスウェイ

マスウェイ

Mathway は、デバイスに内蔵されている電卓よりも複雑なツールを必要とする数学の問題をすべて解決できる、非常に便利なアプリです。

アドビプレゼンター

アドビプレゼンター

Adobe Presenter は、Adobe Systems によってリリースされた e ラーニング ソフトウェアで、Microsoft Windows プラットフォーム上で Microsoft PowerPoint プラグインとして利用できます。

オオハシ 2.3.0

オオハシ 2.3.0

Toucan は教育テクノロジー プラットフォームです。日常的に使用される一般的な Web サイトを閲覧しながら、新しい言語を学習できます。

ENetViet 24.2

ENetViet 24.2

eNetViet は、保護者と子供が勉強している学校を結び付け、子供の現在の学習状況を明確に理解できるようにするアプリケーションです。

デュオリンゴ

デュオリンゴ

Duolingo - 無料で言語を学ぶ、または単に Duolingo は、さまざまな言語を学び、練習できる教育プログラムです。

ラピッドタイピング

ラピッドタイピング

RapidTyping は、タイピング速度を向上させ、スペル ミスを減らすのに役立つ、便利で使いやすいキーボード トレーニング ツールです。RapidTyping では、さまざまなレベルに合わせてレッスンが構成されており、タイピングの方法や既存のスキルを向上させる方法を学びます。

MathType 7.4.10.53

MathType 7.4.10.53

MathType は、開発者 Design Science (Dessci) が提供するインタラクティブな方程式ソフトウェアで、ワード プロセッシング、プレゼンテーション、e ラーニングなどの数学的記法を作成して注釈を付けることができます。このエディタは、TeX、LaTeX、および MathML ドキュメントの作成にも使用されます。

文法的に

文法的に

Grammarly の AI を活用したアプリは、人々のコミュニケーションをより効果的にするのに役立ちます。何百万ものユーザーが毎日 Grammarly を利用して、メッセージ、ドキュメント、ソーシャル メディアの投稿をより明確に、エラーなく、よりプロフェッショナルなものにしています。