google-apps-script - 创建一个包含日期的数组,并在第一个日期和最后一个日期之间添加天数,周六和周日除外
问题描述
我知道有些问题看起来与此类似,但我正在为我所拥有的特定必要性而摸不着头脑。
我有一个 GoogleSheet 列,每一行都有这样的自动导入日期(欧洲日期):22/04/2020、23/04/2020、24/04/2020、28/04/2020。(例如,一行以逗号分隔)。在另一列中,我有一个带有 arrayformula 函数的星期几:
PROPER(TEXT(B5:B;"DDDD"))
我在 Google App Script 上的功能是创建一个数组,其中包含与当天名称相关的所有日期
let numberOfDates = currentSheet.getRange(5,1).getValue(); // I have the number of dates written on the Sheet, I just get the value
let arrayDates = [];
for (let i=0;i<numberOfDates;i++){
arrayDates.push([currentSheet.getRange(5+i,2).getValue(),currentSheet.getRange(5+i,3).getValue()]);
}
如果我在数组上执行 Logger.log,这是它将返回的值的类型
[[Wed Apr 22 00:00:00 GMT+02:00 2020, Wednesday], [Thu Apr 23 00:00:00 GMT+02:00 2020, Thursday], [Fri Apr 24 00:00:00 GMT+02:00 2020, Friday], [Tue Apr 28 00:00:00 GMT+02:00 2020, Tuesday]]
现在,我还需要在此数组中设置 2020 年 4 月 27 日星期一,因为我要创建一个计划。问题是我不想混淆从什么来源添加的内容,所以最后,所有添加的日期我都会用红色表示。
有时,源的日期集将超过一个月,我希望将除周六和周日之外的所有日期混合在一起。
我想这很复杂,但也许你可以用一个关于如何创建这个 Array 的解决方案来打动我?
非常感谢 !
解决方案
在开始日期和结束日期之间生成一个日期数组,不包括周六和周日
function dateDayArray(start,end) {
var start=start||new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate());
var end=end||new Date(new Date().getFullYear(),new Date().getMonth(),new Date().getDate() + Math.floor(Math.random()*100));//Just a random date for testing
const endv=end.valueOf();
if(isDate(start) && isDate(end)) {
var dtA=[];
let n=0;
do{
var cur=new Date(start.getFullYear(),start.getMonth(),start.getDate()+n++);
if(cur.getDay()>0 && cur.getDay()<6) {
dtA.push(Utilities.formatDate(cur, Session.getScriptTimeZone(), "MMM dd, yyyy, E"));
}
}while(cur.valueOf()<endv);
}else{
console.log("Invalid Inputs");
}
SpreadsheetApp.getUi().showModelessDialog(HtmlService.createHtmlOutput(JSON.stringify(dtA)), "Display Results");
}
function isDate(date){
return(Object.prototype.toString.call(date) === '[object Date]');
}
推荐阅读
- visual-studio-2017 - 无法运行 2020 年 12 月的 Visual Studio 2017 Enterprise 更新
- xcode - Xcode中是否有最大数量的子项目
- discord - 如何删除 discord.js v12 中的消息
- php - 您能否在一个查询中从同一个表中提取所有父子关系列,同时保持正确的顺序?
- python - 将单个图加载到 pytorch 几何数据对象中以进行节点分类
- jenkins - Jenkinsfile 管道选项:等效时
- asp.net - 在 Visual Studio 中从 IIS 打开网站会重新启动网站
- android - Android Kotlin:如何在片段中垂直对齐 RecyclerView
- sublimetext3 - XML 语法高亮中的嵌入式 JS
- asp.net - 在 mac 上的 azure data studio 上部署和传输数据库到服务器