如何在一个Google App脚本中访问多个电子表格(而非工作表)?

时间:2019-10-01 23:28:06

标签: google-apps-script google-sheets

背景

我有2个独立的电子表格。他们从不同的传播媒介获取Google表单提交的窗口清洁估计请求;

  • 一个电子表格可以捕获所有通过电子邮件发送的请求,
  • 另一个电子表格通过电话捕获所有请求。

无论是通过电子邮件还是电话,我捕获的数据都是相同的。

合并回复

我找到了如何从表单提交中获取编辑更新。但是,当更新发生时,我想将数据移动到另一个电子表格中,该电子表格称为“估计的编译清单”。一旦在我包含在代码中的任何其他电子表格上提交了表单,它将数据编译到一个电子表格上。

我的问题

如何从绑定的电子表格中调用其他单独的电子表格,还是必须在提交表单电子表格中编写代码并将该数据路由到编译器列表?

我还很新,只需要一些关键词,我就会参加比赛。您知道这是怎么回事:“您不知道自己不知道的东西”-这就是我的代码语法。

1 个答案:

答案 0 :(得分:1)

您可以研究的一些关键字/概念:

因此在绑定的电子表格上,您可以使用

访问该电子表格中的数据
var ss = SpreadsheetApp.getActiveSpreadsheet()

但在该绑定电子表格中,以便访问您使用的辅助电子表格

var ss_other = SpreadsheetApp.openById("xxxxxxx")

一旦有了变量ss_other,应用于它的任何方法都会在辅助电子表格中生效

例如,要将A1:B10范围内的值从一个电子表格移动到另一个电子表格,您可以执行以下操作

var ss = SpreadsheetApp.getActiveSpreadsheet()
var sht = ss.getSheetByName("sourceSheet") //whatever the sheet is called with the source data
var rng = sht.getRange("A1:B10")
var values = rng.getValues()
var height = values.length
var width = values[0].length
var ss_dest = SpreadsheetApp.openById("xxxxxxx")
var sht_dest = ss_dest.getSheetByName("destSheet")
var destRng = sht_dest.getRange(1,1,height,width)
destRng.setValues(values)

其中xxxxxx是电子表格的ID,当您在工作表中打开该电子表格时,例如https://docs.google.com/spreadsheets/d/xxxxxxx/edit

使用setValues()时,“获取”的目标范围必须与源范围具有相同的大小和形状,即行和列的数量相同。您无法从A1:B10中获取值,而是只说setValues()到范围“ A1”,并期望它从A1到B10填充。因此,如果源范围具有可变大小,则您已在源中建立了数据大小,并在目标getRange()中使用了这些尺寸-这就是为什么上面的代码使用变量'height'和'width'以及目标getRange()调用使用相对引用。

我希望这能给您带来帮助,