Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 昨天自动移动&x27;来自谷歌表单响应表的数据_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 昨天自动移动&x27;来自谷歌表单响应表的数据

Javascript 昨天自动移动&x27;来自谷歌表单响应表的数据,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有谷歌表单,它链接到表单响应表。我想每天将数据从“差异报告-出口”表移动到“Vaishali Nagar-DTR”表。日期将从Colum J的“差异报告-出口”表中使用 条件是,如果我今天运行脚本,它应该移动前一天的数据。例如,如果我今天运行脚本,即2020年10月31日,那么它应该只选择2020年10月30日的数据。这个过程每天都在进行。为了运行这个脚本,我将使用时间触发器 我使用的脚本是下面提到的问题。我面临的问题是基于今天的日期 电子表格的链接为: 函数copyrange(){ var

我有谷歌表单,它链接到表单响应表。我想每天将数据从“差异报告-出口”表移动到“Vaishali Nagar-DTR”表。日期将从Colum J的“差异报告-出口”表中使用

条件是,如果我今天运行脚本,它应该移动前一天的数据。例如,如果我今天运行脚本,即2020年10月31日,那么它应该只选择2020年10月30日的数据。这个过程每天都在进行。为了运行这个脚本,我将使用时间触发器

我使用的脚本是下面提到的问题。我面临的问题是基于今天的日期

电子表格的链接为:

函数copyrange(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheetByName('差异报告-出口');//源工作表
var testrange=sheet.getRange('J:J');
var testvalue=(testrange.setNumberFormat(“@”).getValues());
Logger.log(testvalue);
var ds=ss.getSheetByName('Vaishali Nagar-DTR');//目标工作表
var数据=[];
var j=[];
var today=新日期();
var Dayed=新日期(今天);Dayed.setDate(Dayed.getDate()-1);
var today=Utilities.formatDate(新日期(),'GMT-0','dd/MM/yyyy')
//要签入J:J的条件,如果为true,则将同一行复制到数据数组
对于(i=0;i解释:
  • 主要问题是,您当前的代码将日期与今天的日期进行比较,而不是与昨天的日期进行比较

  • 但是,您的代码可以进一步优化。您不需要使用for循环来检查元素是否与今天的日期匹配,而可以使用仅获取昨天的数据,然后删除lst列,因为您不需要它位于目标工作表中:

    yest_data = data.filter(r=>r[9]==yesterday).map(v=>v.slice(0,-1));
    
  • 最好检查数据的长度是否大于0,否则脚本在设置值时会出错


解决方案:
检查日期是否相等时,应使用日期值或纪元时间。改为尝试此操作,它允许您将特定日期作为您的<代码>今天值传递

function test() {
  var now = new Date('October 28, 2020');
  var today = new Date(now.setHours(0, 0, 0, 0));
  copyYesterday(today);
}

/**
 * Copy yesterday's responses from Sheet1 to Sheet2.
 * @param {Date} [today] - Optionally include a value to use as "today".
 */
function copyYesterday(today) {
  if (today == null) { today = new Date(new Date().setHours(0, 0, 0, 0)); }
  var yesterday = (new Date(today)).setDate(today.getDate() - 1);
  
  var ss = SpreadsheetApp.getActive();
  var sourceSheet = ss.getSheetByName('Sheet1');
  var sourceData = sourceSheet.getDataRange().getValues();
  
  var responses = [];
  for (var rowIndex = 0; rowIndex < sourceData.length; rowIndex++) {
    var row = sourceData[rowIndex];
    var responseDate = row[0];
    if (responseDate.valueOf() == yesterday) {
      responses.push(row);
    }
  }
  
  if (responses.length > 0) {
    var destination = ss.getSheetByName('Sheet2');
    destination.getRange(destination.getLastRow()+1, 1, responses.length, responses[0].length).setValues(responses);
  }
}
功能测试(){
var now=新日期('2020年10月28日');
var today=新日期(现在是设定小时数(0,0,0,0));
昨天(今日),;
}
/**
*将昨天的回复从第1页复制到第2页。
*@param{Date}[today]-可选地包括一个用作“today”的值。
*/
昨天(今天)的活动{
如果(today==null){today=newDate(newDate().setHours(0,0,0,0));}
var Dayed=(新日期(今天)).setDate(今天.getDate()-1);
var ss=SpreadsheetApp.getActive();
var sourceSheet=ss.getSheetByName('Sheet1');
var sourceData=sourceSheet.getDataRange().getValues();
var响应=[];
对于(var rowIndex=0;rowIndex0){
var destination=ss.getSheetByName('Sheet2');
destination.getRange(destination.getLastRow()+1,1,responses.length,responses[0].length.).setValues(responses);
}
}
函数copyrange(){
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('差异报告-出口');//源工作表
var rg=sh.getRange(1,10,sh.getLastRow(),1);
var vA=rg.setNumberFormat(“@”).getValues();
var ds=ss.getSheetByName('Vaishali Nagar-DTR');//目标工作表
var数据=[];
var j=[];
var today=新日期().valueOf();
var Dayed=新日期(today.getFullYear()、today.getMonth()、today.getDate()-1).valueOf();

对于(var i=0;我能否请您确认以下任何答案是否解决了您的问题或提供了反馈?
function copyrange() {

  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Discrepancy Report - Outlet'); //source sheet
  const ds = ss.getSheetByName('Vaishali Nagar - DTR'); //destination sheet
  const data = sheet.getRange('A2:J'+ sheet.getLastRow()).getDisplayValues();
  var yesterday = new Date();
  yesterday.setDate(yesterday.getDate()-1);
  var yesterday = Utilities.formatDate(yesterday, ss.getSpreadsheetTimeZone(), 'dd/MM/yyyy');
  yest_data = data.filter(r=>r[9]==yesterday).map(v=>v.slice(0,-1));
  const start_row=ds.getRange('B7:B').getValues().filter(String).length +6; //calculate max row
  if (yest_data.length>0){
   ds.getRange(start_row+1,1,yest_data.length,yest_data[0].length).setValues(yest_data);
  };
}
function test() {
  var now = new Date('October 28, 2020');
  var today = new Date(now.setHours(0, 0, 0, 0));
  copyYesterday(today);
}

/**
 * Copy yesterday's responses from Sheet1 to Sheet2.
 * @param {Date} [today] - Optionally include a value to use as "today".
 */
function copyYesterday(today) {
  if (today == null) { today = new Date(new Date().setHours(0, 0, 0, 0)); }
  var yesterday = (new Date(today)).setDate(today.getDate() - 1);
  
  var ss = SpreadsheetApp.getActive();
  var sourceSheet = ss.getSheetByName('Sheet1');
  var sourceData = sourceSheet.getDataRange().getValues();
  
  var responses = [];
  for (var rowIndex = 0; rowIndex < sourceData.length; rowIndex++) {
    var row = sourceData[rowIndex];
    var responseDate = row[0];
    if (responseDate.valueOf() == yesterday) {
      responses.push(row);
    }
  }
  
  if (responses.length > 0) {
    var destination = ss.getSheetByName('Sheet2');
    destination.getRange(destination.getLastRow()+1, 1, responses.length, responses[0].length).setValues(responses);
  }
}
function copyrange() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Discrepancy Report - Outlet'); //source sheet
  var rg=sh.getRange(1,10,sh.getLastRow(),1);
  var vA= rg.setNumberFormat("@").getValues();
  var ds = ss.getSheetByName('Vaishali Nagar - DTR'); //destination sheet
  var data=[];
  var j=[];
  var today = new Date().valueOf();
  var yesterday = new Date(today.getFullYear(),today.getMonth(),today.getDate()-1).valueOf();
  for (var i=0;i<vA.length;i++) {
    var dt=new Date(vA[i][0]);
    var dtv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
    if (dtv==today) {
      data.push(sheet.getRange(i+1,1,1,9).getValues());
    }  
  }
  ds.getRange(getColumnHeight(ds,2,ss)+1,1,data.length,data[0].length).setValues(data);
}

function getColumnHeight(col,sh,ss){
  var ss=ss||SpreadsheetApp.getActive();
  var sh=sh||ss.getActiveSheet();
  var col=col||sh.getActiveCell().getColumn();
  const rcA=sh.getRange(1,col,sh.getLastRow(),1).getValues().reverse()
  let s=0;
  for(let i=0;i<rcA.length;i++) {
    if(rcA[i][0].toString().length==0) {
      s++;
    }else{
      break;
    }
  }
  return rcA.length-s;
}