将setValue与importRange一起使用以创建动态链接的单元格?

时间:2015-05-21 07:53:35

标签: google-apps-script google-sheets

在主表上填写一行数据(名为'eventlist')后,我正在运行以下函数。我希望脚本创建一个包含链接到我的主工作表的单元格的新工作表,以便它从我刚刚使用ImportRange输入的信息行中提取数据。但是出于这个例子的目的,我只是从一个单元格中提取数据,直到我开始工作......

我可以创建工作表并将数据发送到单元格。我也可以在我的主表上绘图并让它更新另一个。但是,我无法将两者结合在一起。下面的代码一直运行到'setValue',我最终试图让最后一个单元格包含公式'= importrange(相关表单和单元格范围信息);'但是我不知道如何发送这个公式文本并包括我的行& 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...';      
    }
  }
}

1 个答案:

答案 0 :(得分:0)

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

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...';      
    }
  }
}