2016-06-16 16 views
0

私はスプレッドシートの新しい値を処理し、指定されたアドレスにメールを送信するはずのかなり簡単なスクリプトを作成しています。そして私はその問題に直面した。私のコードは以下の通りである:Googleのスプレッドシートの編集に関するメールを自動的に送信

function onEdit(e) { 
    //part of the code for checking e.range to process only updated values 
    sendEmail(); 
} 
function sendEmail() { 
    // arguments are missed only for demo 
    GmailApp.sendEmail(); 
} 

私は「シンプルトリガ」を使用していますが、私の機能「のsendEmail()は、」私は、スクリプトエディタから起動する場合にのみ機能します。私は最初に私のために電子メールを送信することを許可し、機能は正常に動作します。しかし、スプレッドシートの値を変更している場合、関数 "onEdit(e)"は新しいデータを処理しますが、 "sendEmail()"関数は何もしません。

「現在のプロジェクトのトリガ」メニューのプロジェクトのトリガを使用してこの問題を部分的に解決しました。その場合、関数 "sendEmail()"は正常に動作しますが、更新に関する情報にアクセスすることはできません。 私の目的のために、私はちょうど2番目の方法を使用し、毎回新しい値を「手動で」見つけることができましたが、私はこの作業を最適化したいと思います。

  1. は、私が正しい、上記のプロセスであるか、私はどこにでも間違い をした:

    だから、私の質問がありますか?

  2. プロセスが適切ならば、両方のケースを組み合わせる方法はどこですか?

ありがとう!

+0

ありがとうございます。私はこのドキュメントを紛失しました。問題は解決されました) – NoisyFlasher

+0

@soup多分あなたはあなたのコメントを回答として再投稿し、私はこの質問に答えてマークしますか? – NoisyFlasher

答えて

0

あなたは、(as the docs say)シンプルトリガーは許可なしで実行されるため、電子メールを送信できないことを正しく理解しました。リソースメニューから作成されたinstallable triggerは、トリガーを作成したユーザーと同じ権限を持ちます。編集時に起動するように設定されている場合は、単純なトリガーと同じタイプのevent objectが取得されます。

ので、最小限の例では、「編集上で」実行するように設定され、このようになります:JSON形式で

function sendMail(e) { 
    MailApp.sendEmail('[email protected]', 'sheet edited', JSON.stringify(e)); 
} 

このメール全体のイベントオブジェクト。

脇に:あなたのスクリプトが電子メールを送信するだけで、それを読む必要がない場合は、GmailAppの代わりにMailAppを使用して、アクセス許可の範囲を狭くする必要があります。

関連する問題