2016-11-10 11 views
0

免責事項として、私はプログラミングの概念を新しく考えています。あなたが本当に私の親友になりたければ、より具体的な説明が良いでしょう。しかし、どんな助けもありがたいです。Script Appを使用してGoogleシート内のセルから日付を取り出す

私のごく小さなビジネスでは、給与計時にQuickBooksを使用していますが、ロジスティクス目的で従業員にはGoogleスプレッドシートを使用して時間を入力させていただいています。

(私が設定したトリガーごとに)日付の最初の列を1日2回チェックするスクリプトを作成したいと思います。日付が今日の日付と等しいかそれよりも大きい場合は、同じ行のいくつかの列をチェックして、セルが記入されているかどうかを確認するスクリプトが必要です。 0またはnullの場合、通知を送信したい。

参考までに下の図をご覧ください。

Test

これまでのところ、これは私が持っているものである。この時点で

function values2() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(), 
     sheet = ss.getSheetByName("TimeSheet"), 
     range = sheet.getDataRange(), 
     values = range.getValues(), 
     indx, logToday, today, body, 
     recipients = "[email protected]", 
     subject = "Timesheet Notification" + ss.getName(); 

//Finds current date and creates string. I would prefer to have a numeric value associated to the current date, as well as a numeric value associated with the date for each row. 
    var CurrentDate = new Date(); 
    Logger.log(CurrentDate); 
     logToday = Logger.getLog(); 
     indx = logToday.indexOf("INFO"); 
     today = logToday.substring(indx + 6, indx + 16); 

//I'm having things sent to my email for test purposes 
    MailApp.sendEmail(recipients, subject, today); 
//Clears Log 
    Logger.clear(); 
    for (var r=1; r<values.length; r++) 
    { 
    var row = values[r], 
     date = row[0], 
     price = row[1], 
     units = row[2], 
     total = row[3], 
     name = row[4]; 

    Logger.log(date); 
    Logger.log(price); 
    Logger.log(units), 
    Logger.log(total), 
    Logger.log(name); 
    } 

    body = Logger.getLog(); 
    MailApp.sendEmail(recipients, subject, body); 
} 

、私は最初の列から各日付をキャッチできるようにしたい、今日の日付と比較し、チェック同じ行の別のセルに移動し、最初の列の次の日付に移動します。私はIF/Elseの文章で遊んだことがあるが、役に立たない。

+0

あなたの試行錯誤を見せてください。 –

答えて

0

空のセルに含まれる最初の列の日付要素を今日と比較したい場合、次のスクリプトはどうですか?

function values2() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(), 
     sheet = ss.getSheetByName("TimeSheet"), 
     range = sheet.getDataRange(), 
     values = range.getValues(), 
     indx, logToday, today, body, 
     recipients = "[email protected]", 
     subject = "Timesheet Notification" + ss.getName(); 

    var lR = sheet.getLastRow(); 
    var dateinfo = sheet.getRange('a1').offset(0, 0, lR, 1).getValues(); 
    var today = new Date(); 
    var y0 = today.getFullYear(); 
    var m0 = today.getMonth() + 1; 
    var d0 = today.getDate(); 

    for (var i=0; i<dateinfo.length; i++){ 
     x = Date.parse(dateinfo[i]); 
     var date = new Date(x); 
     var y = date.getFullYear(); 
     var m = date.getMonth() + 1; 
     var d = date.getDate(); 
     if (y0 === y && m0 === m && d0 === d) { 
      Logger.log("ok:" + i) // same date 
     } else { 
      Logger.log("error:" + i) // difference date 
     }; 
    }; 
} 
+0

ありがとうございます。何度もぶつけた後、これが私が思いついたものです。申し訳ありません、私は前にあなたのポストを見ませんでした、K Tanaike。 – KayZak

関連する問題