Javascript 当两个数组数据点匹配时执行函数
我是JavaScript新手,因此请原谅任何错误/明显疏忽 我试图找到一种方法来运行一个函数,该函数只在其中一个“运行月份”与当前月份匹配时执行。下面的代码对我来说似乎有意义,但不执行 在某种情况下,我尝试运行一个基于时间的宏,它是Google Sheets,每个季度只执行一次(Javascript 当两个数组数据点匹配时执行函数,javascript,arrays,date,google-apps-script,Javascript,Arrays,Date,Google Apps Script,我是JavaScript新手,因此请原谅任何错误/明显疏忽 我试图找到一种方法来运行一个函数,该函数只在其中一个“运行月份”与当前月份匹配时执行。下面的代码对我来说似乎有意义,但不执行 在某种情况下,我尝试运行一个基于时间的宏,它是Google Sheets,每个季度只执行一次(Runmonths) 函数createTimeDrivenTriggers(){ var月=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
Runmonths
)
函数createTimeDrivenTriggers(){
var月=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
var RunMonths=[“一月”、“四月”、“七月”、“十月”];
var now=新日期();
var thismount=months[now.getMonth()];
var getMonth=Runmonths[now.getMonth()];
如果(thisMonth==getMonth){
var电子表格=SpreadsheetApp.getActive();
电子表格.getRange('AE:AE').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly:true,skipFilteredRows:true});
电子表格.getRange('AE1').activate();
电子表格.getCurrentCell().setValue('结果');
}
}
我假设getMonth()
返回一个整数。您正在使用此返回的整数作为索引
您正在使用的两个数组在某个索引处的值不相同。
months[1]
是“二月”
,RunMonths[1]
是“四月”
由于
“二月”
不等于“四月”
,因此无法使用其他函数。
仅包含4个元素,但now.getMonth()返回的值为6,超出了范围。相反,请检查thisMonth
是否在runmonds
数组中。您可以在GoogleApps脚本中使用以下方法执行此操作
我已经从您的原始代码中删除了一些逻辑,以解决您的特定问题。您可以在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");
}
}
你现在得到的是什么。getMonth()?可能是因为输入错误:RunMonths
而不是行中的RunMonths
:var getMonth=RunMonths[now.getMonth()]
@NishantDixit我尝试了console.log(getMonth),但它似乎不起作用。如果此方法实际上创建了时间驱动触发器,请确保不要过度创建它们(即使通过脚本,也只能看到自己的)。如果没有,那么你需要一个更好的函数名。