独立脚本引用已知和新工作表

时间:2017-07-01 12:23:35

标签: google-sheets

我打算写一个代码,将数据导入我的活动工作表中。

该脚本是独立的 - 将是一个附加组件

活动工作表将是新的(变量ID)

主工作表具有已知/静态ID

我的解决方案是使用Logger记录我的活动工作表的ID。我将时间信息从前面切片,只留下Id。 我遇到了两个问题:

  1. 将切片记录器输出定义为变量会导致空白输出。我检查了这个:

    function misc() {
    var wb3 = SpreadsheetApp.getActiveSpreadsheet().getName();
    var wb2 = Logger.getLog().slice(35,999);
    Logger.log(wb3);
    Browser.msgBox(wb2);
    Logger.clear()
    }
    
  2. 除“确定”按钮外,我的消息框显示为空白。 使用Browser.msgBox(Logger.getLog()。slice(35,999))会生成一个带有我的工作表ID的消息框,所以我可以使用它。只是不整洁。

    1. 使用切片记录器输出时出现错误值错误消息
    2. 我在下面写了一个脚本来复制我的主人的数据:

      function import() {
      var wb1 = SpreadsheetApp.getActiveSpreadsheet().getId();
      Logger.log(wb1);
      var ssa = SpreadsheetApp.getActiveSpreadsheet().getSheetById('MASTER_SHEET_ID').getSheetByName("ToTo");            
      ssa.getRange('A1:C6').copyTo(SpreadsheetApp.openById(Logger.getLog().slice(35,999)).getSheetByName("ToTo").getRange('A1:C6'))
      }
      

      感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

我认为空白对话框是正确的。尝试将Logger.getLog()向下移动一行。

function misc() {
var wb3 = SpreadsheetApp.getActiveSpreadsheet().getName();
var wb2 = Logger.getLog().slice(35,999);//Nothing in logger yet
Logger.log(wb3);//Now there's something in logger
Browser.msgBox(wb2);
Logger.clear()//Now there's nothing in logger
}

我认为这是不正确的链接,您无法获取ID,然后是getSheetByName。

var ssa = SpreadsheetApp.getActiveSpreadsheet().getSheetById('MASTER_SHEET_ID').getSheetByName("ToTo"); 

我的建议是不要试图过于喜欢链接。在调试代码以访问中间变量时,它实际上更有用。我的猜测是每个人都调试代码。