我絕對不是專家,並且在簡單的工作流程的Google應用程序腳本中撰寫。一個幫助重複性任務,另外兩個幫助不斷嘗試和學習編程。Javascript/Google Apps腳本for循環查找匹配,但繼續
我正在尋找助手是如何接近以下設置。我不確定是否想要一個「for」循環,也許「if/else」是一種方法。
我將從電子表格中讀取數據,特別是4行4列。其中一列會有日期。我將這些日期與當前日期進行比較,以查看日期是否爲7天前。如果是這樣做,但繼續查看日期,看看是否還有一天也在七天之內,如果是的話也做一些事情。
例如: 日期:2014年2月4日,2014年2月28日,2014年2月11日,2014年2月25日 今天的日期:2014年3月1日
我要循環在日期內,請注意2014年2月28日是在今天的七天之內,併發送一封電子郵件,然後繼續檢查日期,並查看2014年2/25/20也在七天內,併發送另一封電子郵件。
我不是在找我找對如何處理這個答案,
我的思想(粗糙)
for (i=0, i<dates.length; i++) {
if (dates[i] <= (different between today's date and dates[i]) {
send an email;
continue looping;
} else if {
continue;
}
}
希望還挺明白了吧。 :)
編輯:UPDATE* * 這裏是我想出來的那麼遠,下面是日期代碼和電子表格值。
日期在電子表格C1:C4(2014年2月5日,2014年2月15日,2014年2月28日,2014年3月2日)
function calculateDays() {
//Gets the dates of schedule
var ss = SpreadsheetApp.getActiveSheet();
var dataRange = ss.getRange("C1:C4");
var values = dataRange.getValues();
//Caculation for single day
var one_day = (1000 * 60 * 60 * 24);
//For loop to get the values from spreadsheet
for (i = 0; i < values.length; i++) {
//Puts dataRange values into date format
var scheduledDays = new Date(values[i]);
var today = new Date();
//grabs times from today and scheduled days in millseconds and subtracts
var difference = scheduledDays.getTime() - today.getTime();
//divides to get number of dates, rounds, and converts to positive integer
var diffDay = Math.abs(Math.floor(difference/one_day));
Logger.log(diffDay);
}
我是什麼未來不確定如何循環變量diffDays以確定日期是否在今天的日期之前七天。我知道一個是......可能是我只是累了,但思想會有所幫助。
我試圖
for (j = 0; j < diffDays; j++) {
Logger.Log(diffDays[j]);
}
作爲一個起點,看看發生了什麼記錄,但它顯示空白......這就是爲什麼我下跌套牢。新問題
下面是使用嗶嘰的推薦代碼更新的代碼 -
更新塞爾回覆爲主。調整了一下,以幫助理解在記錄器中返回給我的值。還要調整爲今天的日期添加7天以獲得比較的未來日期。 (請參見下面的代碼爲補充意見)
function myFunction() {
var data = SpreadsheetApp.getActiveSheet().getRange("C1:C4").getValues();
var week = (1000*60*60*24*7);
Logger.log('a week is ' + week);
var todayDaysTime = new Date().setHours(0,0,0,0);
Logger.log('this is today= ' +todayDaysTime);
var weekPlusSevenDays = week + todayDaysTime;
Logger.log('this is todayDaysTime + a week ' +weekPlusSevenDays);
for (i=0 ; i<data.length; i++) {
Logger.log('Value of date in cell = '+data[i][0].getTime());
if (data[i][0].getTime() == weekPlusSevenDays) {
//send an email;
Logger.log('mail sent');
}
}
}
我已經在電子表格中列C更新日期是2014年3月9日,2014年3月10日,2014年3月11日,和3/12/2014。所以我期望的是代碼將運行,看到電子表格中的值3/11/2014等於todaysDaysTime + week。我正在嘗試使用今天的日期並添加七天,並查看它是否與電子表格中的日期匹配。到目前爲止,它不匹配。這裏是logger.log的副本。
[14-03-04 09:55:09:770 PST]一週是604800000
[14-03-04 09:55:09:770 PST]這是今天= 13939.2億
[14-03-04 09:55:09:770 PST]這是todayDaysTime +一週1394524800000
日期在細胞的[14-03-04 09:55:09 770 PST]值= 13943.52億
[14-03-04 09:55:09:770 PST]日期在單元格中的值= 1394434800000
[14-03-04 09:55:09:770 PST]日期在細胞的值= 1394521200000
日期在細胞的[14-03-04 09:55 ...... 09 771 PST]值= 1394607600000
我不確定爲什麼它不適合未來的日期。我期望有一個完全匹配的電子表格,當電子表格中的日期與今天的日期+一週(7天)匹配時,它會發送一封電子郵件。
任何想法,爲什麼它不匹配?
使用'continue'是不必要的,因爲'for'循環將在它自己完成運行時進入下一次迭代。 – plalx