我是JavaScript新手,请原谅任何错误/明显的疏忽。
我试图找到一种方法来运行仅在"Run months"
之一与当前月份匹配时才执行的函数。下面的代码对我来说似乎很有意义,但是无法执行?
在某种程度上,我试图运行一个基于时间的宏,即Google表格,它每季度只执行一次(Runmonths
)。
function createTimeDrivenTriggers() {
var months = ['January','February','March','April','May','June','July','August','September','October','November','December'];
var RunMonths = ["January", "April", "July", "October"];
var now = new Date();
var thisMonth = months[now.getMonth()];
var getMonth = Runmonths[now.getMonth()];
if(thisMonth === getMonth){
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('AE:AE').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('AE1').activate();
spreadsheet.getCurrentCell().setValue('OUTCOME');
}
}
答案 0 :(得分:1)
Runmonths
仅包含4个元素,但是now.getMonth()
返回的值6,超出范围。而是检查thisMonth
是否在Runmonths
数组中。您可以使用indexOf()
方法在Google Apps脚本中执行此操作。
我已经从您的原始代码中删除了一些逻辑,以解决您的特定问题。您可以使用now
中的日期来查看,它将执行您想要的月份。
function test() {
var months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
var RunMonths = ["January", "April", "July", "October"];
var now = new Date("February 1, 2018");
var thisMonth = months[now.getMonth()];
Logger.log("This month: " + thisMonth);
if (RunMonths.indexOf(thisMonth) != -1) {
Logger.log("Run this month");
} else {
Logger.log("Don't run this month");
}
}
答案 1 :(得分:0)
我假设getMonth()
返回一个整数。您正在使用此返回的整数作为索引。
您使用的两个数组在某个索引处的值不同。
months[1]
是'February'
,而RunMonths[1]
是"April"
。
由于"February"
不等于"April"
,因此您无法使用其他功能。