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

在谷歌工作表中自动执行动态IMPORTRANGE

曾航
2023-03-14

我正在建立一个多节问卷(共3),我想有4张来保存数据(一个主和一个为每个部分)。

当一个新行添加到主工作表时,如何将数据从主电子表格发送到另一个工作表,并使其成为动态的,以便它不会每次都拉同一行?

我在网上找到了这个脚本:

脚本链接

但不幸的是,它是用于在工作表之间移动数据的。它能被重塑吗?

谢谢

共有2个答案

蓬兴国
2023-03-14

要将值发送到另一个工作表(除了您的主工作表),您可以使用onFormSubmit函数,它将在每次提交表单时被触发,并且其事件对象包含表单中的信息,您将能够根据需要将这些值传递到其他工作表中。

// This will be triggered every time the form is submitted
function onFormSubmit(e) {
  // Get all sheets in the active spreadsheet
  var sheetsArr = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  // Get the second sheet
  var slaveSheet1 = sheetsArr[1];
  // Get the row where the values will be inserted 
  var rowVals = slaveSheet1.getLastRow() + 1;
  // The number of cols where you will puth the values
  var numberOfCols = e.values.length;
  // Set values that came from the form
  slaveSheet1.getRange(rowVals, 1, 1, numberOfCols).setValues([e.values]);
}

注意可安装触发器的限制。

孙项禹
2023-03-14

也许set公式类可以帮助您,它可以是动态的

sheet.getRange(1,1,1,1).setFormula('=IMPORTRANGE("SPREADSHEET_URL", "SHEET_NAME!'+rangevariable1inA1notation+':'+rangevariable2inA1notation+'")');

确保获得所需的范围,以及这两个变量的符号,以获得动态范围:

var rangevariable1inA1notation = sheet.getRange(1,1).getA1Notation(); // for example, instead of 1,1 it could be your own variable
var rangevariable2inA1notation = sheet.getRange(2,2).getA1Notation(); //for example
 类似资料:
  • 我试图使用一个谷歌脚本,从检索2个证券字段,并将输出保存到Google Sheet文件。我还需要脚本将datetime添加到工作表的第一列。 我创建了一个包含3列的基本Google工作表: A的格式为DateTime。第1行中有列名称date,第2行之后为空 以下是我的功能: 以下是输出: C和D列的输出正确。A列输出错误。每次我运行该函数时,每一行都会在最后一行的上方添加: 我第一次运行该函数是

  • 我有一个电子表格,有十二张,一年中每个月一张。我希望在打开电子表格时,将与当前月份匹配的工作表默认设置为活动工作表。 似乎很容易: 不幸的是,SpreadsheetApp首先加载第一张工作表(一月),然后加载我想要的工作表。在一些移动客户端上,这会导致不可接受的长加载时间。 在电子表格中的第一张工作表作为活动工作表加载之前,有没有办法钩入序列?

  • 我正在尝试将多个选项卡中的数据导入GoogleSheets中的新工作表。每个选项卡的列标题都是相同的,所有选项卡的数据都是标准化的。我可以毫无问题地使用importrange函数,但问题是:每天都会创建一个新选项卡,我不想每天都编辑查询以包含一个新选项卡。 有没有办法编写导入范围函数(或类似的查询),以便它将导入指定工作表中的EVERY选项卡?例如。今天,Sheet1有Tab1,Tab2,Tab3

  • 我已经在谷歌表格中为我的员工设置了时间表。每个员工都有自己的文档,每周在支付期开始时,我会在每个文档中创建一个新的工作表,并隐藏前一周的工作表。新的工作表是根据付款期(即2月12日至2月18日)的日期命名的。我正在尝试编写一个脚本,可以自动为我完成这项工作。该脚本包含两个在基于时间的触发器上运行的函数。第一个功能工作正常,每周在支付期开始时创建一个新的工作表,并将正确的日期作为工作表的名称。隐藏旧

  • 所以,现在我正在使用谷歌表单将数据添加到我的电子表格中。我想添加我的第二个谷歌表单响应下面我的第一个谷歌表单响应自动添加行(我做这个过程在另一个表使用importrange),即使在我的第一个谷歌响应有一些数据。这两个谷歌表单的内容保持不变,所以我想在1页中看到它。 我之所以要这样做,是为了尽量减少创建另一个电子表格来收集所有数据。当我这样做时,总是会收到一条错误消息“#REF!”因为我知道谷歌表

  • 我有以下脚本。 我有一个电子表格,有10个工作表和15个用户登录并修改它。 在特定列中插入activesheet中两天之间的天数,脚本比较第J列中的日期和今天,并在第F列中插入差值。 我不能使用定时触发器运行此脚本。我想为并发工作表每15分钟运行一次这个脚本。 只有在电子表格中只有一张工作表时,触发器才会定时运行。如果我有多张工作表,则触发器不会随时间运行。如果我将同一个触发器设置为OneEdit