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