在Google表格中自动执行动态IMPORTRANGE

时间:2019-11-19 03:52:37

标签: google-apps-script google-sheets

我正在制作一个多部分的问卷(共3份),我想用4张纸来保存数据(一位主数据,每节一个数据)。

在将新行添加到母版表并将其动态化以使它不会每次都拉出同一行时,我如何将数据从主电子表格发送到另一张表?

我在网上找到了该脚本:

script link

,但是不幸的是,它用于在图纸之间移动数据。可以改建吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

要将值发送到另一张表(从您的主表开始),可以使用onFormSubmit函数,该函数将在每次提交表单时及其包含event objectRestrictions时触发。表单中的信息,您将可以根据需要将这些值传递到其他工作表中。

// 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]);
}

请注意可安装的触发器{{3}}。

答案 1 :(得分:0)

也许setFormula类可以为您提供帮助,它可以是动态的,也可以使用触发器进行更新

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