如何以编程方式从谷歌脚本打开一个新的电子表格

时间:2016-06-03 13:41:58

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

setActiveSpreadSheet doc中,示例非常明确:

// The code below will make the spreadsheet with key "1234567890" the active spreadsheet
var ss = SpreadsheetApp.openById("1234567890");
SpreadsheetApp.setActiveSpreadsheet(ss);
然而,在我的谷歌脚本中实现这一点,根本没有任何事情发生(甚至不是错误信息)..想法?

更新

根据以下答案,很明显上述代码对用户界面没有影响。 我试过这样做:

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

然后我收到了这个错误:

ReferenceError: "window" is not defined.

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

2 个答案:

答案 0 :(得分:2)

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

方法openById会返回电子表格中的句柄,从而可以使用Apps脚本中的电子表格进行操作。这就是打开电子表格所需要的"用于脚本的手段。此操作对用户界面没有影响。

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

对YouTube有影响的一种方法是setActiveSheet:如果将其应用于用户在其浏览器中打开的电子表格,则该方法可以更改该电子表格的哪个标签/表单面向用户。

答案 1 :(得分:0)

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

function openSheetTest() {
  var newWs = SpreadsheetApp.openById('1234567890');
  var sheet = newWs.getSheetByName('Sheet1');

  var data = sheet.getDataRange().getValues();

  Logger.log(data);
}

G表中有一个班级getDataValidations。我们现在所能做的就是制作promts或MsgBoxes。