gpt4 book ai didi

javascript - 电子表格和数组之间的日期操作

转载 作者:行者123 更新时间:2023-11-30 15:10:34 25 4
gpt4 key购买 nike

我正在尝试创建一个函数来查看天数列表(一年校历),并与用户提示中的日期进行比较,直到日期(所有天数都“低于”用户date) 在 B 列中设置一个字符串(在本例中为“Summer holidays”,如果 B 列中没有与单元格对应的其他值。

我有:this is the table as seen before action

如果我在输入中设置 9 月 12 日,我会期望什么:enter image description here

function setTrimesters() {
var sheet =
SpreadsheetApp.getActive().getSheetByName("calendar2017");

// Start of 1st trimester
var input = ui.prompt("Set first day of trimester (DD/MM)");
var value = input.getResponseText();

var allStartEndTrimesters = [valorInici1rTri]

// Get dataRange
var dataRange = sheet.getRange('A1:B'+sheet.getLastRow());

// Get dataRange values
var data = dataRange.getDisplayValues();

for (var i = 0 ; i < data.length ; i++) {
if (data[i][0] < value) {
if (data[i][1] == '') {
data[i][1] = "Summer holidays";
}
}
}
dataRange.setValues(data);
}

脚本使用日期的day 值。然后,在 10 月,从 1 日到 11 日,脚本也分配值“暑假”。

我不知道如何在比较之前获取日 月的值。我尝试将 setNumberFormat 设置为毫秒或天(类似于 42895 左右)...但是使用日期的 SpreadsheetApp 和 App 脚本存在一些限制。

在此先感谢您的帮助

最佳答案

问题是您将日期作为字符串 使用,因此它们会按字典顺序进行比较。日在前,4/9 在 5/7 之前,这不是您想要的。我建议

  • 使用getValues而不是 getDisplayValues .它将检索 JavaScript 日期对象而不是字符串。然后比较<工作正常,但您还需要将开始日期设置为 Date 对象:见下文。
  • 不要覆盖 A 列中的输入数据。分离输入和输出范围。

这是一个示例,删除了用户界面部分:

function testSummer() {
var sheet = SpreadsheetApp.getActiveSheet();
var userEnteredDate = "26/07"; // what you get from user
var dateParts = userEnteredDate.split("/");
var beginning = new Date();
beginning.setMonth(dateParts[1] - 1, dateParts[0]);
beginning.setHours(0, 0, 0, 0); // so it's 0 hour of the day entered, in the current year

var inputData = sheet.getRange('A1:A'+sheet.getLastRow()).getValues();
var outputRange = sheet.getRange('B1:B'+sheet.getLastRow());
var outputData = outputRange.getValues();

for (var i = 0; i < inputData.length; i++) {
if (inputData[i][0] < beginning && outputData[i][0] == "") {
outputData[i][0] = "summer vacation";
}
}
outputRange.setValues(outputData); // not overwriting input
}

关于javascript - 电子表格和数组之间的日期操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45169716/

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