将多个Google电子表格(5+)同步回主谷歌电子表格

时间:2015-01-06 20:45:21

标签: google-apps-script google-sheets

我很难找到将多张图表同步到主电子表格的方法。 对于我的测试,我有一个大型电子表格,地址在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例如选择*其中city =' miami'但我相信目前谷歌电子表格无法做到这一点。

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

非常感谢任何正确方向的帮助。

2 个答案:

答案 0 :(得分: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()删除您不想要的部分数据。

答案 1 :(得分:0)

那些必须使用多个Google表格和Excel的人的解决方案:

我让用户在Google云端硬盘上编辑自己的文件。我的主表将所有必要的信息合并为一个。 Google在Google工作表中有内置命令,可以从其他工作表中的特定位置获取数据。 创建一个主谷歌工作表文档,将所有相关信息拉入1个文档。这可以保护您不想查询的所有其他信息,并将其全部放入1张google表格中。

(出于隐私原因我改了一些信,这只是一个例子:) 把它放在你导入数据的单元格中,即A1。 它将从名为Totals的工作表中导入数据,从A1到C2。

= IMPORTRANGE( “1l9jPPp5ylfgAjO_PDymXSR_ivfwHG1j7Ax-UASi6UYc”, “总计!A1:C2”)

= IMPORTRANGE(“Put-Your-Document-Key-Here”,“PutSheetNameHere!把范围或单个单元放在这里。”)

我的主表已发布,因此我可以使用查询将其导入excel。

您从URL获取文档密钥。打开要从中导入数据的Google表格,URL应如下所示:

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

在文档设置中,您可以每分钟检查和更新。

然后:你可以在Excel中进行1次网页查询。

OR

如果您只使用excel,只需制作共享的Google驱动器或将文档共享到您的驱动器中即可。在您的计算机上安装Google云端硬盘,然后像往常一样在驱动器上引用excel文件。谷歌硬盘将保持更新。最简单的解决方案是让每个人都使用excel,然后将文件共享到计算机同步的驱动器。之后,只需使用对驱动器上常量位置的其他excel文件的常规引用。

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