gpt4 book ai didi

javascript - 谷歌应用脚​​本: Create Multiday-Events//Compare Values in Multiple Rows

转载 作者:行者123 更新时间:2023-12-02 21:31:48 24 4
gpt4 key购买 nike

我一直在尝试创建一个脚本,该脚本可以从日期列表生成一系列全天事件。日期列表的格式如下:

2020/01/01  promotion offer 1
2020/01/02 promotion offer 1
2020/01/03 promotion offer 2
2020/01/04 promotion offer 2
2020/01/05 promotion offer 2
2020/01/06 promotion offer 3

所以我想做的是创建一个范围从 01/01 到 01/02 的事件,标题为“促销优惠 1”,然后创建另一个范围从 01/03 到 01/05 的事件,并且有标题为“促销优惠 2”,然后是一天,标题为“促销优惠 3”。

我的方法是检查第 1 行第 2 列中的值是否与第 2 行第 2 列中的值不同。但我不知道是否可以将该检查包含在“常规”for 循环中。所以我尝试使用两个for循环。这不起作用:D

这是我迄今为止尝试过的:

var alloffers = spreadsheet.getRange("E133:F141").getValues(); // speichert die Werte in der angegegeben Range in var offerkalender

for (row=0; row<alloffers.length; row++) {

var offer = alloffers[row];
var date = offer[0];
var conditions = offer[1];

}

for (row=1; row>alloffers.length; row++) {

var nextoffer = alloffers[row];
var nextdate = nextoffer[0];
var nextconditions = nextoffer[1];

}

if (conditions != nextconditions) {

eventCal.createAllDayEvent(conditions, date, nextdate);

}

有人能帮忙吗? :)

最佳答案

对您帖子的评论正朝着正确的方向发展。最简单的方法是检查新行是否等于旧行,但您还想继续检查是否有其他行。下面我所做的是检查这些值,并将它们放入一个新的占位符数组中,以表示开始日期、结束日期和促销标题。只需更改 alloffers 变量中的范围,这对您来说应该很有吸引力。

注意:在测试中,我注意到日历应用程序切断了多日事件的最后一天。这是由于时间事件的处理所致,因此从 1/1/2020 @ 00:00:00 到 1/3/2020 @ 00:00:00 运行的全天事件将转换为 1/1 的全天事件仅/2020 和 1/2/2020,因此我重新编写了编码,将时间添加到多日事件的结束日期,从而使其从 1/1/2020 @ 00:00:00 运行到 1/3/2020 @ 23:59:59。

  var alloffers = sheet.getRange("Your Range").getValues(); // speichert die Werte in der angegegeben Range in var offerkalender
// create trimmed offers array
var trimmedoffers = [];
// set first array line to the first offer data
trimmedoffers[0] = [alloffers[0][0],alloffers[0][0],alloffers[0][1]];
for (var i=1, s=1; i<alloffers.length; i++) {
// check if offer on this date matches offer on previous date
if (alloffers[i][1] != alloffers[i-1][1]) {
// if it does not, set new offer information into trimmed array
trimmedoffers[s] = [alloffers[i][0],alloffers[i][0],alloffers[i][1]];
s++;
} else {
// if it does, change end date of offer in trimmed array and add on 23:59:59
trimmedoffers[s-1] = [trimmedoffers[s-1][0],new Date(alloffers[i][0].getTime()+86399000),trimmedoffers[s-1][2]];
}
}
// use new array to create events based on total number of offers
for (var t=0; t<trimmedoffers.length; t++) {
// check if event is a single day
if (trimmedoffers[t][0] == trimmedoffers[t][1]) {
// if it is, create all day event
eventCal.createAllDayEvent(trimmedoffers[t][2],trimmedoffers[t][0]);
} else {
// if not, create an event from start time to finish time
eventCal.createEvent(trimmedoffers[t][2],trimmedoffers[t][0],trimmedoffers[t][1]);
}
}

关于javascript - 谷歌应用脚​​本: Create Multiday-Events//Compare Values in Multiple Rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60605410/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com