Exception 例外:范围的起始行太小-记录数字为什么?
我有一个基本的脚本,可以从工作表中提取数字并使用它们创建一个范围,以及使用最后一列函数。我有一个错误范围太小的张贴范围 当我记录列号和行号的输出时,这些结果和预期的一样 我最初认为,这是因为一个是最后一列拉动,另一个是从表中的单元格中拉动一个整数,因为它们带有小数位数,所以我通过转换为数字,然后使用.tofixed()删除小数来克服这一点,但这也不起作用。有什么想法吗Exception 例外:范围的起始行太小-记录数字为什么?,exception,google-apps-script,range,Exception,Google Apps Script,Range,我有一个基本的脚本,可以从工作表中提取数字并使用它们创建一个范围,以及使用最后一列函数。我有一个错误范围太小的张贴范围 当我记录列号和行号的输出时,这些结果和预期的一样 我最初认为,这是因为一个是最后一列拉动,另一个是从表中的单元格中拉动一个整数,因为它们带有小数位数,所以我通过转换为数字,然后使用.tofixed()删除小数来克服这一点,但这也不起作用。有什么想法吗 function weeklyData() { var sourcess = SpreadsheetApp.openByI
function weeklyData() {
var sourcess = SpreadsheetApp.openById('1B93Oq2s9Nou5hVgOb3y3t15t9xnqRMBnrYkAed-oxrE'); // key of source spreadsheet
var sourceSheet = sourcess.getSheetByName('Measures & Answers'); // source sheet name - change to your actual sheet name
var lr = Number(sourceSheet.getRange(2,3).getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow()).toFixed(0);
for(var i=0;i<lr+1;i++){
var dataValue = sourceSheet.getRange(i+2,3).getValue(); //This weeks numbers to update into table
var rowdataRange = sourceSheet.getRange(i+2,4).getValue(); //The row that the data needs to be pasted
var rowformat = Number(rowdataRange);
var row = rowformat.toFixed(0);
var pasteSheet = sourcess.getSheetByName('WHERE DATA ENDS UP'); // Data is to be pasted - change to your actual sheet name
var pasteColumn = pasteSheet.getRange(12,12).getDataRegion(SpreadsheetApp.Dimension.COLUMNS).getLastColumn()+1;
var column = pasteColumn.toFixed(0); // Column that is free for this weeks data
var pasteRange = pasteSheet.getRange(row,column,1,1);
Logger.log(pasteRange);
// pasteRange.setValue(dataValue);
}};
function weeklyData(){
var sourcess=SpreadsheetApp.openById('1B93Oq2s9Nou5hVgOb3y3t15t9xnqRMBnrYkAed-oxrE');//源电子表格的键
var sourceSheet=sourcess.getSheetByName('Measures&Answers');//源工作表名称-更改为实际工作表名称
var lr=Number(sourceSheet.getRange(2,3).getDataRegion(SpreadsheetApp.Dimension.ROWS).getLastRow()).toFixed(0);
对于(var i=0;i您的脚本对我来说运行良好。我怀疑这是您从某处改编的示例脚本,并试图将其应用于您的数据结构
出现错误的原因可能是源工作表第4列中的数据不是数字格式?请更改数据或将以下行更改为包含数值的列
var rowdataRange = sourceSheet.getRange(i+2,4).getValue();
此脚本针对此特定用途编写得很糟糕。您可能需要检查电子表格,因为它在随机范围内有许多随机值
当您使用以下命令Logger.log(pasteSheet.getLastColumn());
时,返回的数字是3753
:这意味着这是将粘贴数据的下一个可用列
您收到的错误消息是由于范围不正确,并且您为了访问它而传递了错误的值,这很可能是因为上面提到的值
此外,在清除所有不必要的数据后,您可以使用下面的脚本
一小条
function weeklyData(){
var电子表格=SpreadsheetApp.openById(“电子表格的ID”);
var sourceSheet=spreadsheet.getSheetByName(“度量和答案”);
var pasteSheet=spreadsheet.getSheetByName(“数据结束的地方”);
var valsToCopy=sourceSheet.getRange(2,3,sourceSheet.getLastRow(),1).getValues();
var rowsAt=sourceSheet.getRange(2,4,sourceSheet.getLastRow(),1).getValues();
var column=pasteSheet.getRange(12,12).getDataRegion(SpreadsheetApp.Dimension.COLUMNS).getLastColumn()+1;
对于(变量i=0;i
解释
上面的脚本收集所有需要复制的数据以及与之关联的行。为了确保不会最终使用不适当的范围值,已设置if
条件以确保值不为空
参考
- )
- )
Hello@TORJL,您是否介意共享一份经过消毒的工作表副本?此外,您在哪一行收到上述消息?干杯!我对脚本的第17行有问题。工作表是:我认为循环即将结束。数字已发布到正确的工作表中,但我仍然在最后得到错误信息循环。当我将代码传递给其他人时,我如何解决此问题?Hello@TORJL,请使该工作表可共享!干杯:)现在发布:谢谢!我不得不稍微调整一下,因为这些列与上一个可用列不同步,所以我在循环之前添加了一行以查找最后一个可用列,并使用相同的格式对列号进行parseInt处理,并且处理时没有任何错误。var column=pasteSheet.getRange(12,12).getDataRegion(SpreadsheetApp.Dimension.COLUMNS).getLastColumn()+1;for(var i=0;ifunction weeklyData() {
var spreadsheet = SpreadsheetApp.openById("ID_OF_THE_SPREADSHEET");
var sourceSheet = spreadsheet.getSheetByName("Measures & Answers");
var pasteSheet = spreadsheet.getSheetByName("WHERE DATA ENDS UP");
var valsToCopy = sourceSheet.getRange(2, 3, sourceSheet.getLastRow(), 1).getValues();
var rowsAt = sourceSheet.getRange(2, 4, sourceSheet.getLastRow(), 1).getValues();
var column = pasteSheet.getRange(12,12).getDataRegion(SpreadsheetApp.Dimension.COLUMNS).getLastColumn()+1;
for (var i = 0; i < valsToCopy.length; i++)
if (rowsAt[i][0] != "")
pasteSheet.getRange(parseInt(rowsAt[i][0]), parseInt(column)).setValue(valsToCopy[i][0].toString());
}