2016-12-24 65 views
0

我已经通过搜索,但我找不到解决方案,但我相信它应该在这里。也许,我用来搜索的关键字不正确。从更新到多个电子表格导入特定数据

问题:

我想导入(捕获)数据是指区域A从名为“新数据”电子表格表。表格每2个工作日更新一次。

https://docs.google.com/spreadsheets/d/1WRFvZ5XXpf06WPgC70KRtGi5_hmGKZXFiFYcW806_uk/edit?usp=drivesdk

,并添加这些新行到电子表格名为区域A已经有它自己的数据。

https://docs.google.com/spreadsheets/d/1c_SBGjUNOr2Oi2tpCVlmD0e1x1Ov52khJYN5jcm8Mf8/edit?usp=drivesdk

我的尝试:

IMPORTRANGE功能工作不错,但还不够。我必须打开Region A Spreadsheet并在表格末尾写入该函数,然后将结果复制粘贴到6个区域的所有Spreadsheet文档中,如示例中(在现实生活中大约为50)。然后在2天内从“新数据”表中获取renewe数据并复制它。

有没有办法应用脚本来添加行(从新数据到区域表)来解决问题?

谢谢!

更新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 
    } 
} 

它并不是那么干净,因为我很快就做到了,但按照模式添加其他区域,一切都将一次完成。

+0

我试着解释更好。比方说,我有50个电子表格,每个地区有自己的旧数据和一个有新数据的电子表格。我每周3次在电子表格中放置和重写新数据。 如果我使用查询&导入范围,它会从“新数据”根据地区获取当前数据,但是: 1)我需要复制粘贴(以便能够编辑l)2)我需要能够导入范围再次出现在新数据电子表格中的新数据。 因此,当新数据替换为新数据电子表格等时,我需要再导入结果+导入范围。 谢谢 –

+0

好吧请在我上面编辑的答案中尝试脚本。 – utphx

+0

Works如果将脚本插入到所有电子表格列表中,则工作正常。最后的语气:是否可以在所有列表上一次运行脚本? –

相关问题