我已经搜索过,但我无法找到解决方案,但我相信它应该在这里。也许,我用来搜索的关键字不正确。
问题:
我想从名为" New Data"的电子表格表中导入(捕获)引用区域A的数据。该表每2个工作日更新一次。
并将这些新行添加到名为Region A的电子表格中,该电子表格已经拥有了自己的数据。
我尝试了什么:
Importrange函数效果很好,但还不够。我必须打开Region A Spreadsheet并在表的末尾编写函数,然后复制粘贴结果也适用于6个区域的所有Spreadsheet文档,如示例中所示(在现实生活中大约为50)。然后在2天内从"新数据"中获取renewe数据。桌子和copypaste它。
有没有办法应用一个可以添加行的脚本(从New Data到Region A表)来解决问题?
谢谢!
2016年12月26日更新:请参阅下面的评论,我无法解决一个问题
答案 0 :(得分:0)
有点不清楚,但听起来像是查询每个区域的数据,所以对于区域A尝试:
=query(IMPORTRANGE("1WRFvZ5XXpf06WPgC70KRtGi5_hmGKZXFiFYcW806_uk","Sheet Name!A1:D"),"where Col1 contains 'Region A'")
只需更改工作表名称!上述
编辑#2
基于要求不附加行的评论:
function regionA() {
// Data Sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheets()[0];
var data = dataSheet.getDataRange().getValues();
//Code for Region A
var regionAId = ""
var regionA = "Region A";
var regionAdata = SpreadsheetApp.openById(regionAId).getSheets()[0];
var column = regionAdata.getRange('A2:A');
var values = column.getValues();
var ct = 1;
while ( values[ct] && values[ct][0] != "" ) {
ct++;
}
for ( var i=0; i < data.length; i++) {
if (data[i][0] == regionA){
regionAdata.getRange(ct+2,1,1,4).setValues([data[i].slice(0, 4)]);
ct++
}
}
}
编辑#1
追加一行
根据您的评论,您可以在newData文件中使用此脚本,而不是报告文件。
function myFunction() {
// Data Sheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
var dataSheet = ss.getSheets()[0];
var data = dataSheet.getDataRange().getValues();
//You can change these for each Region
var regionAId = "SPREADSHEET KEY for RegionA"
var regionA = "Region A";
var regionAdata = SpreadsheetApp.openById(regionAId);
var regionBId = "SPREADSHEET KEY for RegionB"
var regionB = "Region B";
var regionBdata = SpreadsheetApp.openById(regionBId);
//add the other regions
for ( var i=0; i < data.length; i++) {
if (data[i][0] == regionA){
regionAdata.appendRow(data[i])
}
if (data[i][0] == regionB){
regionBdata.appendRow(data[i])
}
//add the other regions
}
}
这不是那么干净,因为我做得很快,但按照模式添加其他区域,一切都将立即完成。