Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当两个数组数据点匹配时执行函数_Javascript_Arrays_Date_Google Apps Script - Fatal编程技术网

Javascript 当两个数组数据点匹配时执行函数

Javascript 当两个数组数据点匹配时执行函数,javascript,arrays,date,google-apps-script,Javascript,Arrays,Date,Google Apps Script,我是JavaScript新手,因此请原谅任何错误/明显疏忽 我试图找到一种方法来运行一个函数,该函数只在其中一个“运行月份”与当前月份匹配时执行。下面的代码对我来说似乎有意义,但不执行 在某种情况下,我尝试运行一个基于时间的宏,它是Google Sheets,每个季度只执行一次(Runmonths) 函数createTimeDrivenTriggers(){ var月=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];

我是JavaScript新手,因此请原谅任何错误/明显疏忽

我试图找到一种方法来运行一个函数,该函数只在其中一个“运行月份”与当前月份匹配时执行。下面的代码对我来说似乎有意义,但不执行

在某种情况下,我尝试运行一个基于时间的宏,它是Google Sheets,每个季度只执行一次(
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),但它似乎不起作用。如果此方法实际上创建了时间驱动触发器,请确保不要过度创建它们(即使通过脚本,也只能看到自己的)。如果没有,那么你需要一个更好的函数名。