2017-02-16 5 views
0

コードについてはほとんど分かっていませんし、誰かがこれを行う方法を知っていれば、単にヘルプを探しています。私は、Googleスプレッドシートを持っており、この例のためのがGoogleシート - ドロップダウンメニューの選択時にセル内のアドレスに電子メールを送信するコード

列Aが 列Bは、テキスト 列Cは、アイテムのドロップダウンリストは、(スケジュールと完全に、保留中の)データ検証ツールを使用して作られている電子メールアドレスであるとしましょう。

私は列Cに「完了」を選択時にコードを必要とする、電子メールがすべてのヘルプは次のように理解される

列Bからのテキストを含む電子メールの本文のカラムAに受信者に送信されます私は開発者ではない、私は私の教会がよりスムーズに動くのを手助けしようとしている牧師だ。

、ここでスプレッドシートへのリンクです...このサンプルについてhttps://docs.google.com/spreadsheets/d/1bA-gDvZ_jbJMyU6IqExBjHKclrKmqJSMHyuKHsr2CMA/edit?usp=sharing

、ここではスクリプトです...

var sheetname = "FacilitiesWorkRequests"; 

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var range = sheet.getRange(1, 3, sheet.getLastRow(), 1); 
    var list = SpreadsheetApp.newDataValidation().requireValueInList(["pending", "scheduled", "complete"], true).build(); 
    range.setDataValidation(list); 
} 

function onEdit() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var ac = sheet.getActiveCell(); 
    if (ac.getValue() == "complete") { 
    data = sheet.getRange(ac.getRowIndex(), 1, 1, 2).getValues(); 
    Logger.log(data) 
    MailApp.sendEmail({ 
     to: data[0][0], 
     subject: "sample mail", 
     body: data[0][1] 
    }); 
    } 
} 

答えて

0

どのように?

var sheetname = "Here, please input your sheet name."; 

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var range = sheet.getRange(1, 3, sheet.getLastRow(), 1); 
    var list = SpreadsheetApp.newDataValidation().requireValueInList(["pending", "scheduled", "complete"], true).build(); 
    range.setDataValidation(list); 
} 

function onEdit() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var ac = sheet.getActiveCell(); 
    if (ac.getValue() == "complete") { 
    data = sheet.getRange(ac.getRowIndex(), 1, 1, 2).getValues(); 
    Logger.log(data) 
    MailApp.sendEmail({ 
     to: data[0][0], 
     subject: "sample mail", 
     body: data[0][1] 
    }); 
    } 
} 

enter image description here

コピーして、スプレッドシート上のスクリプトエディタにこのスクリプトを貼り付け、使用するシート名を設定し、トリガーをインストールしてください。トリガをインストールする方法は次のとおりです。詳しい情報はhttps://developers.google.com/apps-script/guides/triggers/installable#google_apps_triggersにあります。

  1. スクリプトエディタで、「リソース」 - 「現在のプロジェクトのトリガ」を選択します。

  2. ここをクリックしてトリガーを追加してください。

  3. 実行時に、「onEdit()」の機能を選択します。

  4. イベントは「スプレッドシートから」 - 「値の変更」です。

このスクリプトでは、このスクリプトでスプレッドシートを開くと、ドロップダウンリストが適用されますが、既存のドロップダウンリストは変更されません。新しい行を追加した場合は、新しいドロップダウンリストが追加されるためです。このスクリプトを実行すると、認証画面が表示されたら認証してください。

ドロップダウンリストから「完了」を選択すると、選択した同じ行の電子メールを使用して電子メールが送信されます。電子メール本文は、同じ行の列Bです。

これが役立てば、私はうれしいです。

+0

ありがとうございます!今、列を変更したい場合はどうしたらいいですか?実際のスプレッドシートでは、電子メールアドレスはL列、本文はG列、ドロップダウンフィールドはJ列になります。どうすれば変更できますか?このコードでは列見出しが表示されません。 –

+0

カラムは "getRange()"によって定義されます。 "getRange()"のドキュメントはこちらです。 https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer,Integer,Integer) "onOpen()"はドロップダウンリストを作成します。 "onEdit()"は電子メールを送信します。 – Tanaike

+0

ありがとうございます。今、私は分かる。しかし、私はこのエラーが発生し続けます。 TypeError:nullのメソッドgetActiveCellを呼び出すことができません。(行12、ファイル "コード") –

関連する問題