Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.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
Exception 例外:范围的起始行太小-记录数字为什么?_Exception_Google Apps Script_Range - Fatal编程技术网

Exception 例外:范围的起始行太小-记录数字为什么?

Exception 例外:范围的起始行太小-记录数字为什么?,exception,google-apps-script,range,Exception,Google Apps Script,Range,我有一个基本的脚本,可以从工作表中提取数字并使用它们创建一个范围,以及使用最后一列函数。我有一个错误范围太小的张贴范围 当我记录列号和行号的输出时,这些结果和预期的一样 我最初认为,这是因为一个是最后一列拉动,另一个是从表中的单元格中拉动一个整数,因为它们带有小数位数,所以我通过转换为数字,然后使用.tofixed()删除小数来克服这一点,但这也不起作用。有什么想法吗 function weeklyData() { var sourcess = SpreadsheetApp.openByI

我有一个基本的脚本,可以从工作表中提取数字并使用它们创建一个范围,以及使用最后一列函数。我有一个错误范围太小的张贴范围

当我记录列号和行号的输出时,这些结果和预期的一样

我最初认为,这是因为一个是最后一列拉动,另一个是从表中的单元格中拉动一个整数,因为它们带有小数位数,所以我通过转换为数字,然后使用.tofixed()删除小数来克服这一点,但这也不起作用。有什么想法吗

 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()); }