当前位置: 首页 > 知识库问答 >
问题:

将多个google电子表格(5)同步回主google电子表格

唐法
2023-03-14

我很难找到将多张工作表同步到主电子表格的方法。在我的测试中,我有一个大的电子表格,上面有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查询,我会这样做,例如选择*where city='miami',但我认为这在google电子表格中是不可能的。

所以我的下一个想法是使用这个脚本并在子电子表格上设置过滤器。问题是,当它运行脚本时,它会将整个工作表复制回来,如果5个用户中的任何一个同时更新自己的电子表格,这将导致一个问题,因为他们将覆盖彼此的更改。我的另一个想法是,由于每条记录都有自己唯一的id#(我有一个名为id的列),有没有一种方法可以告诉活动电子表格更新mastersheet中的行,其中id=masterspreadsheet。编辑身份证?

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

共有2个答案

曹光霁
2023-03-14

针对那些必须使用多张谷歌工作表和Excel的用户的解决方案:

我有用户在谷歌硬盘上编辑自己的文件。我的主表将所有必要的信息合并成一个。google在google工作表中内置了命令,可以从其他工作表中的特定位置获取数据。创建一个主谷歌工作表文档,将所有相关信息拉到一个文档中。这保护了你不想查询的所有其他信息,并把它们都纳入1谷歌表。

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

=重要("1l9jPPp5ylfgAjO_PDymXSR_ivfwHG1j7Ax-UASi6UYc","总计!A1: C2")

=IMPORTRANGE("把你的文档-钥匙-这里","PutSheetNamehere!将范围或单个单元格放在这里。”)

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

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

https://docs.google.com/spreadsheets/d/1l9jPPp5ylfgAjO_PFymXSR_ivfwHG1j7Ax-UASi6UYc/edit#gid=0

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

然后:您可以在Excel中进行1次web查询。

或者

如果您只使用excel,只需创建一个共享的谷歌驱动器或将文档共享到您的驱动器中。在你的电脑上安装谷歌硬盘,然后像往常一样引用硬盘上的excel文件。谷歌驱动器将保持更新。最简单的解决方案是让每个人都使用excel,然后将文件共享到您的计算机同步驱动器。之后,只需使用对其他excel文件的正常引用,这些文件将在您的驱动器上的一个固定位置。

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

劳韬
2023-03-14

您可以导入所有数据,然后对数组使用JavaScriptsort()方法。

var thisData = thisWorksheet.getDataRange();

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

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

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

 类似资料:
  • 我已经通过谷歌官方文档《开发者指南》API中提到的一个简单Java代码成功地在我的Google Drive帐户的现有电子表格中创建了一个新的工作表,但我想通过Java代码在我的Google Drive帐户中创建一个新的电子表格。在链接中,他们没有提到这方面的任何示例代码。我已经在Spreadservice类中看到了不同的可用方法。 如何使用Google电子表格API实现这一点?

  • 我是一名编码等方面的初学者,但我正在努力理解我在做什么以及代码中发生了什么。 我想在不同的电子表格之间划一行。 我在“核心”电子表格中有一个脚本,它在“主页”和“完成”表格链接之间移动一行到电子表格: 我搜索了如何将位于“已完成”工作表上的数据移动到另一个名为“数据库”的电子表格链接到电子表格: 但我想将数据从表“CORE”/“Finished”传输到表“database”/“DB”,而不重写DB

  • 我有每周更新的谷歌电子表格。它包含多个工作表,每个星期都有不同的名称。 有没有一种方法可以使用google脚本将该电子表格中的所有表格复制到另一个电子表格中?我的主要目标是复制整个电子表格,并让我运行脚本的工作表拥有源表中的所有工作表和数据。如果这个复制过程只复制数据,而不是其他工作表中的公式,那也很好。 提前谢谢! 埃里克

  • 问题内容: 我正在尝试将表单数据发布到Google电子表格。当前,如果表单经过验证,则会发生以下情况: 我使用成功设置来验证我的表单数据已正确序列化(正确)并且成功。但是,我的Google电子表格未更新(没有数据通过)。我在此处使用了示例代码,将doGet更改为doPost(http://mashe.hawksey.info/2011/10/google- spreadsheets-as-a-da

  • 我正在尝试从多个google电子表格中删除一个特定的表格。 我有一个主电子表格,从所有其他电子表格收集数据。从主电子表格中,我可以在其他电子表格中执行不同类型的操作,如添加工作表、重命名工作表、隐藏和锁定工作表。 但无法删除其他电子表格中的表格。查看了其他线程,但找不到任何解决方法。 这就是我到目前为止得到的。它停在这一排: "fname.delete表(本周);}" 我很感谢大家对我的帮助,因为

  • 我使用Google SpreadSheet附加组件制作Google Analytics(分析)报表。我的问题是,对于每个查询,这个附加组件都会创建不同的工作表。我经常有大约50张不同的表格,其中的数据必须编译成一张表格。例如: 我可能有三张表格,分别是:“有机数据”、“直接数据”和“其他数据” 每个工作表都有一组不同的数据,我想在第四个工作表“Report”中将它们编译成一个表。该表的第一列数据来