【问题标题】:Use setValue with importRange to create a dynamically linked cell?使用 setValue 和 importRange 创建动态链接单元格?
【发布时间】:2015-05-21 07:53:35
【问题描述】:

在我的主表(名为“事件列表”)上填写一行数据后,我正在运行以下函数。我希望脚本创建一个新表,其中包含链接到我的主表的单元格,以便它从我刚刚使用 ImportRange 输入的信息行中提取数据。但就本示例而言,我只是从一个单元格中提取数据,直到它开始工作......

我能够创建工作表并将数据发送到单元格。我还可以在我的主表上绘图并让它更新另一个。但是,我无法将两者结合在一起。下面的代码一直有效,直到'setValue',我最终试图让最终的单元格包含公式'=importrange(相关工作表和单元格范围信息);'但我不确定如何发送此公式文本并包含我的 row 和 col 变量,以便它们与它一起创建最终公式。

提前感谢任何指点!

function addSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var row = sh.getActiveRange().getRowIndex();
  var col = sh.getActiveRange().getColumnIndex();
  var rData = sh.getRange(row, 1, 1, 3).getValues();

  if (row == 1) {
    ss.toast("These are column names. You can not send these.");    
    return
  }

  if(rData[0][0] != null || rData[0][1] != null || rData[0][2] != null) {
    try {      
      ss.insertSheet(rData[0][0]);
     // ss.setActiveSheet(ss.getSheets()[0]);
      ss.getRange("D"+(row)).setValue("=importrange("MYSHEETKEY", "eventlist! +col +row : +col +row" )");
    } catch(e) {
      throw 'Something has gone wrong...';      
    }
  }
}

【问题讨论】:

  • 你想让它把数据拉到与主表相同的行和列吗?另外,您希望它拉整个活动范围还是只拉一个单元格?
  • 感谢您的回复,现在我想我已经整理好了。但要澄清一下,这是一个更大的项目的一部分,所以我正在对每一个功能采取初步措施......因为我真的不知道我在做什么。最终,我将每天两次或三次从大师那里获取一整行信息,并在单独的文档中以一种像样的方式显示这些信息——可能有更巧妙的方法,但现在我只是在看一次处理每个数据,以免混淆自己。就是这个!

标签: google-apps-script google-sheets


【解决方案1】:

不确定这是否正是您想要的,但这会从活动范围导入数据

function addSheet() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getActiveSheet();
  var row = sh.getActiveRange().getRowIndex();
  var col = sh.getActiveRange().getColumnIndex();
  var activeRange = sh.getActiveRange().getA1Notation();
  var rData = sh.getRange(row, 1, 1, 3).getValues();

  if (row == 1) {
    ss.toast("These are column names. You can not send these.");    
    return
  }

  if(rData[0][0] != null || rData[0][1] != null || rData[0][2] != null) {
    try {      
      ss.insertSheet(rData[0][0]);
     // ss.setActiveSheet(ss.getSheets()[0]);
      ss.getRange("D"+(row)).setValue('=importrange("MYSHEETKEY", "eventlist!'+activeRange+'" )');
    } catch(e) {
      throw 'Something has gone wrong...';      
    }
  }
}

【讨论】:

  • 感谢 Akshin,在这里感谢您的帮助。虽然我确定这是正确的,但我有点不愿意使用 getA1Notation,只是因为我不确定它是如何工作的,以及它是否会与我的项目的其余部分并列 - 纯粹是我的无知!但是您的回复实际上很有帮助,我学会了如何正确地包含变量(在您的示例中为“activeRange”,在我的示例中为“row”),并且现在我已经启动并运行了一些额外的调整。再次感谢。 ss.getRange("D8").setValue('=importrange("MYSH​​EETKEY","eventlist!A'+(row)+'")');
  • A1Notation 是必需的,因为“col”是一个数字,您需要在其中放置一个带有字母的范围。我看到你排序了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 2014-01-18
  • 1970-01-01
相关资源
最近更新 更多