数组参考的脚本问题

问题描述:

请原谅我获得帮助的帖子的长度,但该人在上周没有上线,所以我想我会尝试在这里得到最后几个结局。感谢您的任何额外帮助。数组参考的脚本问题

这是我的原始脚本。

function ImportDataRange() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName("AM trip"); //To Sheet Name 
var ssraw = SpreadsheetApp.openById("1n4**4HzvVS****RQhPHndUbn0N0nkpOE5NpO2U"); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName("AM trip"); // From Sheet name 
var range = sheetraw.getRange("B9:U38"); 
var data = range.getValues(); 
sheet.getRange("C1").setValues(data) 
} 

My adjusted script:- 
function ImportDataRange() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('AM trip'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('18h-UAy10EvANHZXLebspZsUbE2fisyEBAFnUYV9JBHs'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('AM trip'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getRange(sheet.getLastRow()+1,3).setValue(data); 

}} 
This takes B7 from the original spreadsheet and places it in the next blank row down and in Column C but not B7:U38, if i change setValue(data) to setValues(Data) I get the range height error. 

Then below, I got from you and below the script is the error it produces:- 
function ImportDataRange() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('AM trip'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('18hAy10EvANHZXLebspZsUbE2fisyEBAFnUYV9JBHs'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('AM trip'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
    setValues(sheet, lastRow, 3, data); 

错误的原因是范围高度应该与输入数据的高度相匹配。 你将不得不修改代码,像这样

function ImportDataRange() { 

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getSheetByName('AM trip'); //To Sheet Name 
var ssraw = SpreadsheetApp.openById('18hAy10EvANHZXLebspZsUbE2fisyEBAFnUYV9JBHs'); // From Spreadsheet ID 
var sheetraw = ssraw.getSheetByName('AM trip'); // From Sheet name 
var range = sheetraw.getRange('B7:U38'); 
var data = range.getValues(); 
var lastRow = sheet.getLastRow()+1; 
sheet.getRange(lastRow,3,data.length,data[0].length).setValues(data) 
} 

基本上,获取数据数组的长度使用array.length给你的行数。你会发现它更多的细节here

上setValues方法细节可以发现here,同样在getRange细节可以发现here

希望帮助

+0

如果今天我们有8项在一列(与服务员(ROW)数据),但明天我们在列中有12个条目(ROW)数据。 – Paul

+0

你可以使用[getDataRange()](https://developers.google.com/apps-script/reference/spreadsheet/sheet) –

+0

谢谢你完美地排序问题。这可能是厚脸皮的,但如果我在From电子表格中有5个工作表,并且目标电子表格中有5个工作表,那么我如何才能将其他4个工作表中的相同范围与目标工作表中的同名对应表达式相比较? – Paul