我是 JavaScript 新手,所以请原谅任何错误/明显的疏忽。
我正在尝试找到一种方法来运行一个函数,该函数仅在其中一个“运行月份”与当前月份匹配时才执行。下面的代码对我来说似乎有意义,但不执行?
对于一些上下文,我尝试运行一个基于时间的宏,即 Google-Sheets,它每季度仅执行一次 (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');
}
}
最佳答案
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");
}
}
关于javascript - 当两个数组数据点匹配时执行函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51398237/