2015-01-06 421 views
0

我很难找到一种方法来同步多个工作表到主电子表格。 对于我的测试,我有一个大的电子表格,在5个城市的地址。我正在尝试为每个城市创建电子表格,并且可以在任一工作表中更改数据时同步数据。 所以我会管理整体数据,并将5个电子表格中的每一个分配给其他人。这样,他们可以更新无权访问所有数据的工作表。使用内置查询或导入区域功能的问题在于,如果用户对“城市”电子表格进行了更改,则会因为引用数据而打碎表单。同步多个谷歌电子表格(5 +)回到主谷歌电子表格

我在搜索后通过'Dev'找到了代码。

var sourceSpreadsheetID = "ID HERE"; 
var sourceWorksheetName = "SHEET NAME HERE"; 
var destinationSpreadsheetID = "ID HERE"; 
var destinationWorksheetName = "SHEET NAME HERE"; 

function importData() { 
    var thisSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetID); 
    var thisWorksheet = thisSpreadsheet.getSheetByName(sourceWorksheetName); 
    var thisData = thisWorksheet.getDataRange(); 
    var toSpreadsheet = SpreadsheetApp.openById(destinationSpreadsheetID); 
    var toWorksheet = toSpreadsheet.getSheetByName(destinationWorksheetName); 
    var toRange = toWorksheet.getRange(1, 1, thisData.getNumRows(), thisData.getNumColumns()) 
    toRange.setValues(thisData.getValues()); 
} 

这个伟大的工程,因为它拷贝了让我做编辑的数据,但问题是我不能导入只是我想要的数据。如果我可以使用sql查询,id可以例如选择*哪里城市='迈阿密',但我相信这是不可能的谷歌电子表格在此刻。

因此,我的下一个想法是使用此脚本并在子电子表格上设置过滤器。问题是,当它运行脚本时,它会将整个表单复制回来,如果5个用户中的任何一个同时更新他们自己的电子表格,则会导致问题,因为他们会覆盖彼此的更改。 另一个想法是,因为每个记录都有自己的唯一ID#(我有一个名为ID的列)有没有办法告诉活动电子表格更新主表中的行id = masterspreadsheet.id编辑?

任何帮助正确的方向将不胜感激。

+0

可以在谷歌电子表格实际使用查询,但它是动态的,在数据​​总是被更新:https://support.google.com/docs/answer/3093343?hl=恩。这是否解决您的问题? – Kriggs

+0

我从单独的电子表格中提取数据,因此我无法使用Query函数本身。我必须做一个引用数据的导入范围。所以不幸的是,这对我不起作用。 – User125

回答

0

您可以导入所有数据,然后在数组上使用JavaScript sort()方法。

var thisData = thisWorksheet.getDataRange(); 

var arryOfData = thisData.getValues(); 
Loggger.log('arryOfData: ' + arryOfData[0]); 

var dataSorted = thisData.sort(); 
Logger.log('dataSorted: ' + dataSorted[0]); 

运行代码,然后查看LOG以查看返回到变量中的内容,作为调试代码的方式。

然后,您可以使用indexOf()slice()删除不需要的部分数据。

+0

这实际上是一个好主意。为了更进一步,我仍然坚持将截断数据更新回主电子表格的问题。使用我目前拥有的代码,它只会复制整个表格而不仅仅是更改。有关于此的任何想法? – User125

0

解决方案为那些谁拥有使用多个谷歌表和Excel:

我有用户编辑在谷歌自己驾驶的文件。我的主表将所有必要的信息合并为一个。 Google在Google表单中内置命令以从其他表单中的特定位置获取数据。 创建一个谷歌床单主文档,将所有相关信息提取到1个文档中。这可以保护您不想查询的所有其他信息,并将其全部纳入Google表单。

(为了保护隐私,我改了一些字母,这只是一个例子:) 把这个单元格放在你要导入数据的地方,即A1。 它将从名为Totals的表中导入数据,从A1到C2。

= IMPORTRANGE( “1l9jPPp5ylfgAjO_PDymXSR_ivfwHG1j7Ax-UASi6UYc”, “彩民!A1:C2”)

= IMPORTRANGE( “投入 - 您 - 文件琴键这里”,“PutSheetNameHere把范围或单个细胞!这里。“)

我的主表已发布,所以我可以使用查询将其导入到Excel中。

您从URL获取文档密钥。打开您要从中导入数据的谷歌板和URL应该是这样的:

https://docs.google.com/spreadsheets/d/1l9jPPp5ylfgAjO_PFymXSR_ivfwHG1j7Ax-UASi6UYc /编辑#GID = 0

在该文件中的设置,你可以使它检查和更新每一分钟。

THEN:您可以在Excel中执行1个网页查询。

OR

如果你只使用出类拔萃,只是做一个谷歌共享驱动器或共享文件到您的驱动器。在您的计算机上安装Google Drive,然后像平常一样引用驱动器上的excel文件。谷歌驱动器将保持更新。最简单的解决方案是让每个人都使用excel,然后将文件共享到您的计算机同步驱动器。之后,只需使用其他excel文件的常规引用,这些文件将位于驱动器上的不变位置。

http://www.officetooltips.com/excel/tips/referencing_cells_outside_the_worksheet.html