【问题标题】:how to programmatically open a new spread sheet from google scripts如何以编程方式从谷歌脚本打开一个新的电子表格
【发布时间】:2016-06-03 13:41:57
【问题描述】:

setActiveSpreadSheet doc 中的例子很清楚:

// The code below will make the spreadsheet with key "1234567890" the active spreadsheet
var ss = SpreadsheetApp.openById("1234567890");
SpreadsheetApp.setActiveSpreadsheet(ss);

但是在我的谷歌脚本中实现它,什么都没有发生(甚至没有错误消息)..想法?

更新

根据下面的答案,很明显上面的代码对 UI 没有影响。 我试过这样做:

function goToEstimate(sheetId)
{
  window.open('https://docs.google.com/spreadsheets/d/'+sheetId);
}

但后来我得到了这个错误:

ReferenceError: "window" is not defined.

有没有办法从谷歌脚本中访问 javascript 全局窗口变量?

【问题讨论】:

  • 再一次:Apps 脚本是服务器端的。它不知道“窗口”或“文档”之类的东西。

标签: javascript google-apps-script google-sheets google-apps google-spreadsheet-api


【解决方案1】:

Apps 脚本无法让电子表格出现在客户端的浏览器中,因为它是服务器端脚本。

openById 方法返回电子表格的句柄,从而可以通过 Apps 脚本使用电子表格进行操作。这就是脚本的“打开电子表格”的含义。此操作对用户界面没有影响。

setActiveSpreadsheet 方法几乎没用;它只会在脚本调用 getActiveSpreadsheet 时更改将返回的电子表格。

确实对 UI 产生影响的一种方法是 setActiveSheet:如果将其应用于用户在浏览器中打开的电子表格,则该方法可以更改该电子表格的哪个选项卡/工作表面向用户。

【讨论】:

    【解决方案2】:

    我猜,您不能只在浏览器中打开新标签页并通过脚本打开新电子表格。那是因为脚本无法控制浏览器。但您可以从已关闭的电子表格中获取数据:

    function openSheetTest() {
      var newWs = SpreadsheetApp.openById('1234567890');
      var sheet = newWs.getSheetByName('Sheet1');
    
      var data = sheet.getDataRange().getValues();
    
      Logger.log(data);
    }
    

    G-sheets 中有一个类Browser。而我们现在所能做的就是制作 promts 或 MsgBoxes。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-30
      • 1970-01-01
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      相关资源
      最近更新 更多