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

标签 javascript arrays date google-apps-script

我是 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/

相关文章:

javascript - 使用 .css 文件中的 CSS 属性的 JQuery 创建元素

Javascript:对嵌套 for 循环的工作方式感到困惑

c - 如何准备 UDP 数据报发送到服务器

asp.net-mvc - MVC Razor - 默认值作为文本框类型日期的当前日期

python - 在 Python 的日期列表中获取每个月的最后一个日期

javascript - 使用 MongoDB 从 AJAX 调用接收 JSON

javascript - 移动格式处理在 HTML/CSS/JavaScript 中的什么位置?

javascript - 在 beforeunload 事件处理程序中取消会使浏览器 URL 发生变化

JavaScript - 为淘汰赛创建数组

开始新月份时的 Python 日期问题