2017-03-19 3 views
-1

先週からのスクリプトを検索しようとしていましたが、肯定的な結果でした。Googleスプレッドシートのセルの日付に基づいて、さまざまな受信者に電子メールを送信する方法

私の要件は、以下の通りである

私が入社して送信されたメールの後、ステータスがで更新する必要があるのその日から180日(> 180 DOJ)が完了した従業員へのサービスの確認メールをお送りしたいと思います他の列は「送信済み\確認済」です。毎日そのスクリプトを実行する必要はなく、システムの日付に基づいて自動的に実行する必要があります。単純な要件のようですが、それは時間を大幅に節約することができます。

私は、要件上の任意のデータ・サンプルまたは説明はご返信ください

https://docs.google.com/spreadsheets/d/1IihLKfo5eP3DoVEQ8_-RmipOCHLXARSg2DMpYfUhTMI/edit#gid=0 Sample data 、以下のサンプル・データ・リンクを添付しています。

誰かがこれを助けてくれたら本当に感謝しています。

よろしく Gopik

+0

ご利用の共有スプレッドシートには、「リンクできるユーザーは誰でも閲覧できます」権限が有効になっていません。 –

+0

私はそれを有効にしました。本当に残念です。 –

+0

[なぜ誰かが私を助けることができますか?実際の質問ではありませんか?](http://meta.stackoverflow.com/q/284236) –

答えて

0

これはあなたのための基本的な出発スクリプトです。私はこのコードをデバッグしていませんが、エディタは問題なくそのまま保存しました。私は電子メールで何を言いたいのか分からない。これは、提供されたスプレッドシートの列の位置に基づいています。私はそのシートに「ConfirmationEmails」という名前を付けました。

function sendConfirmationEmails() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sht = ss.getSheetByName('ConfirmationEmails'); 
    var datrng = sht.getDataRange(); 
    var datAry = rng.getValues(); 
    var day = 86400000; 
    var today = new Date().getTime(); 
    for(var i = 0;i<datAry.length;i++) 
    { 
    if(datAry[i][5] == 'Not Confirmed') 
    { 
     if(isDate(datAry[i][3]) && (((today - new Date(datAry[i][3]).getTime())/day) > 150)) 
     { 
     if(GmailApp.sendEmail(datAry[i][2], 'Confirmation Email', 'It\'s been greater than 150 days since you\'ve joined our organization')) 
     { 
      datAry[i][5]='Confirmed';//You might like to write to the cells here instead of waiting until the end. 
      datAry[i][4]=new Date(); 
     } 

     } 

    } 
    } 
    datrng.setValues(datAry); 
} 

function isDate (x) 
{ 
    return (null != x) && !isNaN(x) && ("undefined" !== typeof x.getDate); 
} 

これまで毎日これを実行するためのトリガーの設定です。コードエディタの編集メニューに移動してトリガを設定し、APIのトリガについて読むことができます。お役に立てれば。

+0

ねえ、これは本当に役に立ちます。私は自分の要件に応じてコードを変更し、完全に動作しました。あなたの努力にとても感謝します。 –

関連する問題