Javascript 谷歌为日期差异编写脚本,并将行附加到单独的选项卡上

Javascript 谷歌为日期差异编写脚本,并将行附加到单独的选项卡上,javascript,java,google-apps-script,Javascript,Java,Google Apps Script,*******我想出来了。编辑代码现在它的作品伟大!谢谢你的反馈***** 我是一个新手编码,我有一个与借款人信息谷歌表。第一列是收到信息的日期。im编写脚本需要能够判断信息是否在30天、45天、30-60天、60-90天和90天以上收到,然后将该行信息附加到google sheets文档中的相应选项卡。这是我到目前为止所做的,但它不起作用 function myFunction() { var ss = SpreadsheetApp.openByUrl("https://docs.google

*******我想出来了。编辑代码现在它的作品伟大!谢谢你的反馈*****

我是一个新手编码,我有一个与借款人信息谷歌表。第一列是收到信息的日期。im编写脚本需要能够判断信息是否在30天、45天、30-60天、60-90天和90天以上收到,然后将该行信息附加到google sheets文档中的相应选项卡。这是我到目前为止所做的,但它不起作用

function myFunction() {
var ss = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1zQHmusx0pcHz4EPYcdmrLeJarWI7LFw5fCVfYDsTL_k/edit#gid=0");
var headSS = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1pnXax3qv2ALswaLshUz6nXobV9e0W0qOOo_0n16r76Y/edit#gid=0");
var headCopy = headSS.getSheets()[0];
ss.setActiveSheet(ss.getSheets()[0]);
var headRows = headCopy.getDataRange().getValues();
var headRow = headRows[0];

for(var p = 1; p < 6; p++) {
    ss.setActiveSheet(ss.getSheets()[p]);
    ss.getDataRange().clear();
    ss.appendRow(headRow);
}

ss.setActiveSheet(ss.getSheets()[0]);
var dataRange   = ss.getDataRange();
var todayDate   = new Date();
var dateConv    = 1000*60*60*24;
var sheet       = ss.getSheets()[0]; 
var sheet30     = ss.getSheetByName('30day'); 
var sheet45     = ss.getSheetByName('45day'); 
var sheet3060   = ss.getSheetByName('30-60'); 
var sheet6090   = ss.getSheetByName('60-90'); 
var sheet90     = ss.getSheetByName('90+'); 


for ( var i = 0; i < dataRange.getNumRows(); i++){ 



    var range       = sheet.getRange(i+1, 1); 
    var loanDate    = range.getValue();
    var lDate       = Date(range);
    var msBetweenDates = todayDate - loanDate;
    var dateDiff    = msBetweenDates/dateConv;

    var spreadSheet = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1zQHmusx0pcHz4EPYcdmrLeJarWI7LFw5fCVfYDsTL_k/edit#gid=0');
    var sheetToCopy = spreadSheet.getSheets()[0];
    ss.setActiveSheet(ss.getSheets()[0])
    var rows = sheetToCopy.getDataRange().getValues();
    var row = rows[i];
  if (dateDiff < 31.0){
        sheet30.appendRow(row); 
    }
  if (dateDiff < 46.0){
        sheet45.appendRow(row); 
    }
  if (dateDiff > 30.0 && dateDiff < 61.0){
        sheet3060.appendRow(row);
    }
  if (dateDiff > 60.0 && dateDiff < 91.0){
        sheet6090.appendRow(row);
    }
  if (dateDiff > 89.0){
        sheet90.appendRow(row);
    }
}
函数myFunction(){
var ss=SpreadsheetApp.openByUrl(“https://docs.google.com/spreadsheets/d/1zQHmusx0pcHz4EPYcdmrLeJarWI7LFw5fCVfYDsTL_k/edit#gid=0");
var heads=SpreadsheetApp.openByUrl(“https://docs.google.com/spreadsheets/d/1pnXax3qv2ALswaLshUz6nXobV9e0W0qOOo_0n16r76Y/edit#gid=0");
var headCopy=heads.getSheets()[0];
ss.setActiveSheet(ss.getSheets()[0]);
var headlows=headCopy.getDataRange().getValues();
var水头=水头[0];
对于(var p=1;p<6;p++){
ss.setActiveSheet(ss.getSheets()[p]);
ss.getDataRange().clear();
ss.appendRow(头枕);
}
ss.setActiveSheet(ss.getSheets()[0]);
var dataRange=ss.getDataRange();
var todayDate=新日期();
var DATECOV=1000*60*60*24;
var sheet=ss.getSheets()[0];
var sheet30=ss.getSheetByName('30天');
var sheet45=ss.getSheetByName('45天');
var sheet3060=ss.getSheetByName('30-60');
var sheet6090=ss.getSheetByName('60-90');
var sheet90=ss.getSheetByName('90+');
对于(var i=0;i30.0&&dateDiff<61.0){
活页3060.附录世界其他地区(世界其他地区);
}
如果(dateDiff>60.0&&dateDiff<91.0){
第6090页。附录世界其他地区(世界其他地区);
}
如果(日期差>89.0){
第90页。世界其他地区(世界其他地区);
}
}

}

好的,在我们排除故障之前,这里有很多问题。我编辑了你的文章,使它更容易阅读,并移动了一些东西

1) 不要将不依赖于循环的变量放入循环中。这只是不必要地一次又一次地重新评估它们。我把一些移到圈外

2)
for(var p=1;p<2;p++){
不循环。它只运行一次,p==1

3) 你确定
ss.setActiveSheet(ss.getSheets()[p]);
得到了你想要的工作表吗?记住,列表索引从0开始

4) 那么,你清除数据,然后得到数据范围?你确定吗

5) 日期对象不是一个数字。您不能仅将其除以以获得日期。如果您试图获得日期之间的天数,则需要先减去日期,获得毫秒,然后执行以下算术:

var todayDate   = new Date();
var millisecondsBetweenDates = dateFromSheetField - todayDate;
daysBetweenDates = millisecondsBetweenDates / dateConv;
6) 您的if-then订单混乱。例如,在
(dateDiff>29.0)和&(dateDiff<61.0)
中,29到46之间的
日期差异将在前面的条件中被击中:
(dateDiff<46.0)
,因此永远不会走到这一步。接下来的2个条件也是如此

7) 你想在这里做什么:

var spreadSheet=SpreadsheetApp.openById(sheet.getId());

您实际上只是在重命名
工作表


我希望这些指针能指引您正确的方向。

谢谢您的帮助。基本上,我想清除除第一个选项卡外的每个选项卡上的数据。程序需要检查第一个选项卡的第一列,并告诉您行的长度是否小于30天,如果是,请将行复制到30天选项卡上,告诉我行的长度是否小于45天f所以把它复制到45天标签上,在30-60、60-90和90+之间。idk如果这能澄清什么。我对这些论坛也很陌生,我不知道如何向你展示我的更新代码…谢谢你的耐心这和Java有什么关系?