Javascript 如果没有,则根据今天的日期将行附加到月报
我正在尝试为我的电子表格创建一个谷歌应用程序脚本。它应该运行一个函数,并根据今天的日期将结果返回到电子表格中的特定工作表中。仅将行附加到活动工作表而不是特定工作表时,效果良好。此外,代码在脚本编辑器中保存得很好,因此我假设没有重大错误。也许我在Javascript中把它放错了,或者代码中有一个我不理解的基本错误。我倾向于我的IF-ELSE或者我如何设置活动的电子表格,但不确定。任何帮助都将不胜感激。以下是代码基础:Javascript 如果没有,则根据今天的日期将行附加到月报,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在尝试为我的电子表格创建一个谷歌应用程序脚本。它应该运行一个函数,并根据今天的日期将结果返回到电子表格中的特定工作表中。仅将行附加到活动工作表而不是特定工作表时,效果良好。此外,代码在脚本编辑器中保存得很好,因此我假设没有重大错误。也许我在Javascript中把它放错了,或者代码中有一个我不理解的基本错误。我倾向于我的IF-ELSE或者我如何设置活动的电子表格,但不确定。任何帮助都将不胜感激。以下是代码基础: function CheckDateInsertData() { func
function CheckDateInsertData() {
function infoDate(){ this gets today's date}
if (infoDate() >= 2016/01/01 && infoDate() <= 2016/01/31) {
function GetData1{
//this retrieves necessary data, working when not using IF ELSE statements and only single active sheet, without calling sheet by name.
var Data =.......... ;
appendData(Data);
function appendData(Data){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.setActiveSheet(sheet.getSheetByName("January"));
sheet.appendRow(['Date', 'Price', 'Location']);
}
}
} else if (infoDate() >= 2016/02/01 && infoDate() <= 2016/02/29){
function GetData2{
var Data = ........;
appendData(Data);
function appendData(Data){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.setActiveSheet(sheet.getSheetByName("February"));
sheet.appendRow(['Date', 'Price', 'Location']);
}
}
}
}
函数CheckDateInsertData(){
函数infoDate(){该函数获取今天的日期}
如果(infoDate()>=2016/01/01&&infoDate()=2016/02/01&&infoDate()这就是我如何布置代码的方式:
function CheckDateInsertData() {
var todaysDate = infoDate();
var startDate = new Date('2016/01/01');
var endDate = new Date('2016/01/01');
var startDateTwo = new Date('2016/02/01');
var endDateTwo = new Date('2016/02/01');
if (todaysDate >= startDate && todaysDate <= endDate) {
GetData('1'); //Pass '1' as the argument
} else if (todaysDate >= startDateTwo && todaysDate <= endDateTwo) {
GetData('2');
};
};
function appendData(Data, oneOrTwo){
var sheetToGet = oneOrTwo === '1'?"January":"February";//If, then, else
var sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.setActiveSheet(sheet.getSheetByName(sheetToGet));
sheet.appendRow(['Date', 'Price', 'Location']);
};
function GetData(oneOrTwo) {//this retrieves necessary data
var Data;
if (oneOrTwo === '1') {
Data = ['one'];
appendData(Data, oneOrTwo);
} else {
Data = ['two'];
appendData(Data, oneOrTwo);
};
};
function infoDate() {
return new Date();// this gets today's date
};
函数CheckDateInsertData(){
var todaysDate=infoDate();
var startDate=新日期('2016/01/01');
var endDate=新日期('2016/01/01');
var startDateTwo=新日期('2016/02/01');
var endDateTwo=新日期('2016/02/01');
如果(todaysDate>=startDate&&todaysDate=startDateTwo&&todaysDate这就是我如何布置代码的方式:
function CheckDateInsertData() {
var todaysDate = infoDate();
var startDate = new Date('2016/01/01');
var endDate = new Date('2016/01/01');
var startDateTwo = new Date('2016/02/01');
var endDateTwo = new Date('2016/02/01');
if (todaysDate >= startDate && todaysDate <= endDate) {
GetData('1'); //Pass '1' as the argument
} else if (todaysDate >= startDateTwo && todaysDate <= endDateTwo) {
GetData('2');
};
};
function appendData(Data, oneOrTwo){
var sheetToGet = oneOrTwo === '1'?"January":"February";//If, then, else
var sheet = SpreadsheetApp.getActiveSpreadsheet();
sheet.setActiveSheet(sheet.getSheetByName(sheetToGet));
sheet.appendRow(['Date', 'Price', 'Location']);
};
function GetData(oneOrTwo) {//this retrieves necessary data
var Data;
if (oneOrTwo === '1') {
Data = ['one'];
appendData(Data, oneOrTwo);
} else {
Data = ['two'];
appendData(Data, oneOrTwo);
};
};
function infoDate() {
return new Date();// this gets today's date
};
函数CheckDateInsertData(){
var todaysDate=infoDate();
var startDate=新日期('2016/01/01');
var endDate=新日期('2016/01/01');
var startDateTwo=新日期('2016/02/01');
var endDateTwo=新日期('2016/02/01');
如果(todaysDate>=startDate&&todaysDate=startDateTwo&&todaysDate)有什么数据类型return?
2016/01/01
是一种算术除法,它不是一个Date
对象或日期的字符串表示形式。它看起来像是在其他函数中包含函数。我不会这样构造代码。你可以将函数放在对象中,将对象放在其他对象中。我想这是可能的在其他函数中包含函数,并让它们运行。您说过代码正在运行。为什么要在其他函数中嵌套函数?啊,您是对的。它以字符串形式返回。因此,如果我去掉函数infoDate()并使其变为var todaysDate=new Date();这将解决该部分问题?那么我如何将其与IF语句中手动输入的日期进行比较?Sandy Good-您能推荐一种更好的方法来确保每个appendData(Data)根据日期返回到单独的工作表吗?appendData()函数内部的唯一性是否正确?不确定什么是最佳做法。什么数据类型是infoDate()
return?2016/01/01
是一种算术除法,它不是一个Date
对象或日期的字符串表示形式。它看起来像是在其他函数中包含函数。我不会这样构造代码。你可以将函数放在对象中,将对象放在其他对象中。我想这是可能的在其他函数中包含函数,并让它们运行。您说过代码正在运行。为什么要在其他函数中嵌套函数?啊,您是对的。它以字符串形式返回。因此,如果我去掉函数infoDate()并使其变为var todaysDate=new Date();这将解决该部分问题?那么我如何将其与IF语句中手动输入的日期进行比较?Sandy Good-您能推荐一种更好的方法来确保每个appendData(Data)根据日期返回到单独的工作表吗?appendData()函数内部的唯一性是否正确?不确定什么是最佳实践。我想我理解它。让我尝试一下,然后在这里返回给您。因此,工作表将始终为1月份?var sheet=SpreadsheetApp.getActiveSpreadsheet();sheet.setActiveSheet(sheet.getSheetByName(“一月”));旧代码可以很好地将行追加到一个工作表中。当我添加setActiveSheet(sheet.getSheetByName(“name”)时);它停止工作了……对此有何想法?请参阅更新的答案。代码现在根据传递给函数的参数值动态更改工作表名称。请参阅带有sheetoget
变量的if-then-else语句。奇怪的是,我无法使它与else-if一起工作,我想知道电子表格调用是否为correct?var sheet=SpreadsheetApp.getActiveSpreadsheet();sheet.setActiveSheet(sheet.getSheetByName(sheetoget));sheet.appendRow(['Date','Price','Location']));我不能再让它附加任何东西了哈哈。可能必须回到绘图板上。谢谢你的帮助!对于这种情况,我会使用调试器,执行每一行代码,一次执行一行,然后查看值。单击左侧的行号。行号上会出现一个红点。代码将在那里停止。d在屏幕上,不要单击空行。在错误图标的右侧,有一个函数名下拉列表。选择要调试的函数名。单击错误图标。我想我理解了。让我试试看,然后在这里给你回复。因此,工作表将始终为1月份?var sheet=SpreadsheetApp.getActiveSpreadsheet();sheet.setActiveSheet(sheet.getSheetByName(“一月”);旧代码可以很好地将行附加到一张工作表中。当我添加setActiveSheet(sheet.getSheetByName(“名称”)时);它停止工作了……对此有何想法?请参阅更新的答案。代码现在根据传递给函数的参数值动态更改工作表名称。请参阅带有sheetoget
变量的if-then-else语句。奇怪的是,我无法使它与else-if一起工作,我想知道电子表格调用是否为correct?var sheet=SpreadsheetApp.getActiveSpreadsheet();sheet.setActiveSheet(sheet.getSheetByName(sheetoget));sheet.appendRow(['Date','Price','Location']));我不能再让它附加任何东西了哈哈。可能必须回到绘图板上。谢谢你的帮助!对于这种情况,我会使用调试器,并在上执行每一行代码