我的编码经验很少,但通常可以通过查看示例来拼凑解决方案。这一次无法使其工作或在我的技能范围内找到解析的例子。
基本上我想从标签1复制数据并将其放在标签2上的运行数据下面,但仅限于标签1上有数据要复制。
我开始使用以下功能,但不检查可用数据,或者改变捕获的数据范围的大小,以便运行并粘贴大量空白。
function CopyRows() {
var source = SpreadsheetApp.openById('key');
var sourcesheet = source.getSheetByName('ImportPage');
var target = SpreadsheetApp.openById('key')
var targetsheet = target.getSheetByName('TargetPage');
var targetrange = targetsheet.getRange(targetsheet.getLastRow() + 1 , 1);
sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).copyTo(targetrange);}
我认为我需要添加的是一种改变捕获数据范围的方法,如果没有数据则停止该功能。
我通过importrange函数从另一张表中获取数据。通过脚本完成整个事情可能会更好,但现在这部分工作得很好。
任何建议都将受到赞赏。
答案 0 :(得分:1)
这可能有效:
function CopyRows() {
var source = SpreadsheetApp.openById('key');
var sourcesheet = source.getSheetByName('ImportPage');
var target = SpreadsheetApp.openById('key')
var targetsheet = target.getSheetByName('TargetPage');
var lastRowOfTrgtSheet = targetsheet.getLastRow();
var srcData = sourcesheet
.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn())
.getValues();
targetsheet.getRange(lastRowOfTrgtSheet+1, 1, srcData.length, srcData[0].length)
.setValues(srcData);
};
它使用setValues()
方法而不是copyTo()
。
如果您想使用copyTo()
,则需要使用带有4个参数的getRange()
版本,并从源表格中的行长度中减去1:< / p>
function CopyRows() {
var source = SpreadsheetApp.openById('key');
var sourcesheet = source.getSheetByName('ImportPage');
var target = SpreadsheetApp.openById('key')
var targetsheet = target.getSheetByName('TargetPage');
var lastRowOfTrgtSheet = targetsheet.getLastRow();
var srcLastRw = sourcesheet.getLastRow();
var targetrange = targetsheet
.getRange(lastRowOfTrgtSheet + 1, 1, srcLastRw-1, sourcesheet.getLastColumn());
sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn())
.copyTo(targetrange);
};