Google apps script CopyValueStorRange错误
我试图获取一个表单输入,它有一个日期加上一个字段,指示范围内的天数。在表格中输入的日期为Google apps script CopyValueStorRange错误,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我试图获取一个表单输入,它有一个日期加上一个字段,指示范围内的天数。在表格中输入的日期为mm/dd/yyyy,天数为1-7之间的数字 我将表格电子表格中的新行复制N次,N是范围内的天数 然后,我尝试通过在字段中添加一天来修改每个重复记录中的一个字段,即YYYY-MM-DD格式的日期。当我试图覆盖我得到的一个字段时: TypeError:在对象2015-11-05中找不到函数CopyValueStorRange。(第46行,文件“”) 我正在使用的代码是我通过本论坛找到的经过一些修改的零碎代码:
mm/dd/yyyy
,天数为1-7之间的数字
我将表格电子表格中的新行复制N次,N是范围内的天数
然后,我尝试通过在字段中添加一天来修改每个重复记录中的一个字段,即YYYY-MM-DD格式的日期。当我试图覆盖我得到的一个字段时:
TypeError:在对象2015-11-05中找不到函数CopyValueStorRange。(第46行,文件“”)
我正在使用的代码是我通过本论坛找到的经过一些修改的零碎代码:
function onSubmit() {
// Sheet to which form submits
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("FormInput");
var lastRow = sheet.getLastRow();
// Determine the from date
var date = (sheet.getRange(lastRow, 4).getValue());
// READ THE NUMBER OF NEW ROWS FROM THE DESIGNATED COLUMN IN "FormInput"
var N = sheet.getRange(lastRow, 6).getValue();
// Sheet to which we will write
var sheetRec = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("UpdatedFormInput");
var lastColumn = sheetRec.getLastColumn();
var lastRowT = sheetRec.getLastRow();
var lastRowB = sheetRec.getLastRow();
// Create N new Rows by copying in the template row N times
var Template = sheetRec.getRange(2, 1, 1, lastColumn);
for (j = 1; j <=N; j++) {
Template.copyTo(sheetRec.getRange(lastRowT + j, 1));
}
var Val1 = sheet.getRange(lastRow, 1);
var Val2 = sheet.getRange(lastRow, 2);
var Val3 = sheet.getRange(lastRow, 3);
var Val4 = sheet.getRange(lastRow, 4);
var Val5 = sheet.getRange(lastRow, 5);
Val1.copyValuesToRange(sheetRec, 1, 1, lastRowT + 1, lastRowT + N);
Val2.copyValuesToRange(sheetRec, 2, 2, lastRowT + 1, lastRowT + N);
Val3.copyValuesToRange(sheetRec, 3, 3, lastRowT + 1, lastRowT + N);
Val4.copyValuesToRange(sheetRec, 4, 4, lastRowT + 1, lastRowT + N);
Val5.copyValuesToRange(sheetRec, 5, 5, lastRowT + 1, lastRowT + N);
// modify the date field in each of the new rows starting from the second new row
var startrowT = lastRowT + 2;
var endrowT = lastRowT + N;
// Copy new data values into the rows
for (j = 1; j <N; j++) {
var result = new Date(date.getTime()+j*(24*3600*1000));
Val4 = Utilities.formatDate(new Date(result), "GMT-5", "yyyy-MM-dd");
// I am trying to copy my new date, (current date + 1), into a cell in multiple rows, column 4
// the utility is returning a string and the receiving field is a date
// getting error "TypeError: Cannot find function copyValuesToRange in object 2015-11-05.(line 46,file"")
Val4.copyValuesToRange(sheetRec, 4, 4, startrowT, 1);
// getting error "TypeError: Cannot find function copyValuesToRange in object 2015-11-05.(line 46,file"")
startrowT = startrowT + 1;
}
}
函数onSubmit(){
//表单提交到的工作表
var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“FormInput”);
var lastRow=sheet.getLastRow();
//确定起始日期
var date=(sheet.getRange(lastRow,4.getValue());
//从“FormInput”中的指定列中读取新行数
var N=sheet.getRange(lastRow,6.getValue();
//我们要写的那张纸
var sheetRec=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“UpdatedFormInput”);
var lastColumn=sheetRec.getLastColumn();
var lastRowT=sheetRec.getLastRow();
var lastRowB=sheetRec.getLastRow();
//通过在模板行中复制N次来创建N个新行
var Template=sheetRec.getRange(2,1,1,lastColumn);
对于(j=1;j,如前所述,可以使用函数.getRange().setValues()代替.copyValueStorRange()
由于我不完全理解你正在拉的范围,我将向你展示当我遇到同样的问题时我最终做了什么。
我试图将标题从一张图纸复制到另一张图纸:
// First define the sheet that you're pulling data from ("dataSheet")
var file = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = file.getSheetByName("name");
// Then define the new sheet that you're pulling data to,
// in my case I look to see if the secondary sheet ("updateSheet")
// already exists, otherwise I insert a new sheet,
// and define its name.
var updateSheet = file.getSheetByName("Update Data from " + name);
var updateSheet = updateSheet || file.insertSheet();
updateSheet.setName("Update Data from " + name);
// Then I was looking to copy the headers of my first sheet
// and copy those to my second sheet.
var shortHeaders = dataSheet.getRange('A1:M1');
var headersValues = shortHeaders.getValues();
updateSheet.getRange("A1:M1").setValues(headersValues);
希望这也能转化为您正在尝试做的事情!如果没有,请询问我,也许通过一些公开讨论,我们可以一起找出如何将其应用于您的数据。如前所述,您可以使用.copyValueStorRange()函数代替.getRange().setValues()
由于我不完全理解你正在拉的范围,我将向你展示当我遇到同样的问题时我最终做了什么。
我试图将标题从一张图纸复制到另一张图纸:
// First define the sheet that you're pulling data from ("dataSheet")
var file = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = file.getSheetByName("name");
// Then define the new sheet that you're pulling data to,
// in my case I look to see if the secondary sheet ("updateSheet")
// already exists, otherwise I insert a new sheet,
// and define its name.
var updateSheet = file.getSheetByName("Update Data from " + name);
var updateSheet = updateSheet || file.insertSheet();
updateSheet.setName("Update Data from " + name);
// Then I was looking to copy the headers of my first sheet
// and copy those to my second sheet.
var shortHeaders = dataSheet.getRange('A1:M1');
var headersValues = shortHeaders.getValues();
updateSheet.getRange("A1:M1").setValues(headersValues);
希望这也能转化为您想要做的事情!如果没有,请询问我,也许通过一些公开讨论,我们可以一起找出如何将其应用于您的数据。您正在用第43行的日期对象覆盖Val4。@RobinGertenbach一个字符串,实际上是Utilities.formatDate()的输出
。但无论如何,Val4不是一个范围对象。有没有想过如何修复它?您在第43行用一个日期对象覆盖Val4。@RobinGertenbach实际上是一个字符串-Utilities.formatDate()的输出。
。但无论如何,Val4不是一个范围对象。有没有想过如何修复它?