@hiroshi0410

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

スプレッドシートでチェックボックスをチェックした際にメールを自動送信

スプレッドシートに関しまして全く知識がない中のご質問となり申し訳ございません。
会社で社員のTODO管理として、スプレッドシートで各項目ごとにチェックボックスを作り、作業が完了した社員にはチェックボックスにチェックを入れてもらっています。
ネットで調べると、チェックボックスにチェックを入れると自動でメールを送信してくれる機能があると知りました。
GASというものでコードを入力することが必要みたいですが・・・全くわかりません。

もし可能でしたら、コピーできるサイトなどがありましたらご教授願います。

スプレッドシートの内容は

            Aさん  Bさん  Cさん
1 経費精算      ☐    ☑   ☑
2 スケジュール登録  ☐    ☐   ☑

↑こんな感じの簡易的なリストです。

チェックした際に、管理している社員にメールが自動で届くことができるのでしょうか?
また、メールの本文に「1経費精算 完了」など項目ごとに届くメールを変更できたりするのでしょうか?

見当違いのご質問でしたら大変申し訳ございません。

0 likes

1Answer

このあたりが参考になると思いますが、生兵法は怪我のもとですので、基本からGoogle Apps Scriptを学ぶことを推奨します。

0Like

Comments

  1. @hiroshi0410

    Questioner

    ご返信いただきありがとうございます。
    こちらのWEBページも以前、拝見させていただきました。
    近い形でしたので参考にさせていただいたのですが・・・恥かしい話、全く理解できませんでした。
    基本から学んだ方が良いのですね・・・
    かしこまりました。
    ちなみのチェックボックスが羅列しているシートでも、☑を入れるとメール送信は可能なのでしょうか?
    WEBで検索しているものは、たいていチェックボックスが縦一列にならんでおり、その横がメールアドレス・・・といったものが多いようでした(-.-)

  2. チェックボックスが押されているかどうかの判断をしているので、どれか一つでも押されていれば、メールは送信されると思いますよ。
    しかしながら、本番環境で使用しているスプレッドシートではなくて、動作確認用のスプレッドシートを作成して、挙動を最初に確かめるべきです。

    if ( criteria == 'CHECKBOX' && status == true)

  3. @hiroshi0410

    Questioner

    function myFunction() {

    var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // スプレッドシートの取得

    var sheet = activeSpreadsheet.getActiveSheet(); // アクティブシートの取得

    var url = activeSpreadsheet.getUrl();// アクティブシートのURL取得

    var mycell = sheet.getActiveCell();//アクティブなセルを取得
    console.log(mycell);

    //アクティブなセルが何列目の何処かを判定、今は4列目に設定
    if(mycell.getColumn() == 4){

    if(value == true){
      
       // 送信するテキスト
       const recipient = 'test@google.com'; //送信先のメールアドレス
       const subject = '購入申請確認';//件名
       const body = `責任者が承認をしました、確認をお願いします。\n ${url}`;//本文
       GmailApp.sendEmail(recipient, subject, body); 
    
    }  
    

    }
    }

    こちらのコードで
    //アクティブなセルが何列目の何処かを判定、今は4列目に設定
    if(mycell.getColumn() == 4){

    ここをシート全体に変更すれば可能でしょうか?

  4. チェックボックスはセルの4列目以降にあるので、おそらく以下でいいのではないでしょうか。

    if(mycell.getColumn() >= 4){

  5. @hiroshi0410

    Questioner

    function onCheck(e) {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const targetSheet = "リスト";
    const activeSheetName = e.source.getActiveSheet().getName();
    console.log('activeSheetName:' + activeSheetName);
    if (activeSheetName == targetSheet) {
    onColNumber(e);
    }
    }

    function onColNumber(e) {
    const cell = e.range;
    const column = cell.getColumn();

    if (column === 1 && !cell.isBlank()) {
    sendToMail(e);
    }
    }

    function sendToMail(e) {
    const mailFrom = "eguweb.jp@gmail.com";
    const mailTo = "from.eguchi@gmail.com";
    let subject = "件名です";
    let body = "本文テスト\n"
    + "送信します。\n";

    GmailApp.sendEmail(mailTo, subject, body, {
    from: mailFrom
    }
    );
    }

  6. @hiroshi0410

    Questioner

    上のコードを見つけてきたのですが・・
    このまま使えるものなのでしょうか・・・?

  7. テストするスプレッドシートを作成して、そこで検証したらいいですよ。
    しかしながら、何度も重ねて言いますが、基本からGoogle Apps Scriptを学ぶことを推奨します。

Your answer might help someone💌