Internet explorer IE中的应用程序脚本帧错误

Internet explorer IE中的应用程序脚本帧错误,internet-explorer,iframe,google-apps-script,Internet Explorer,Iframe,Google Apps Script,我已经成功地编写了一个脚本,并将其嵌入我的谷歌网站。该脚本在Chrome和Safari中运行良好,但我在IE中收到了“此内容不能在一个框架中显示”错误,尽管我已使用谷歌的说明和应用程序脚本小工具添加了该脚本。看看我的代码,这段代码中是否有特定部分导致IE出现安全问题,并拒绝显示它?代码将电子表格加载到带有选项卡的图表中(这是一个大的电子表格,所以我将其细分为选项卡),然后用户可以根据几个不同的字段进行过滤。有解决办法吗 function doGet(e) { var app = UiApp.

我已经成功地编写了一个脚本,并将其嵌入我的谷歌网站。该脚本在Chrome和Safari中运行良好,但我在IE中收到了“此内容不能在一个框架中显示”错误,尽管我已使用谷歌的说明和应用程序脚本小工具添加了该脚本。看看我的代码,这段代码中是否有特定部分导致IE出现安全问题,并拒绝显示它?代码将电子表格加载到带有选项卡的图表中(这是一个大的电子表格,所以我将其细分为选项卡),然后用户可以根据几个不同的字段进行过滤。有解决办法吗

function doGet(e) {
  var app = UiApp.createApplication();
  var ssID = '0AhiXAz5qhL4TdERkNFJndkVXd1A3T0xYdHlnMkp3U2c';
  var ss = SpreadsheetApp.openById(ssID);
  var sheet = ss.getSheets()[0];
  var dataRange = sheet.getDataRange();
  var numRows = dataRange.getNumRows();
  var numCols = dataRange.getNumColumns();
  var dataTable = sheet.getRange(1, 4, numRows, numCols - 3).getDataTable();

  // Filters
  var locationFilter = Charts.newCategoryFilter()
    .setDataTable(dataTable)
    .setFilterColumnLabel('Where was your role located?')
    .setAllowMultiple(true)
    .setSortValues(true)
    .setLabelStacking(Charts.Orientation.VERTICAL)
    .setCaption('Choose a location')
    .setSortValues(true)
    .build();
  var functionFilter = Charts.newCategoryFilter()
    .setDataTable(dataTable)
    .setFilterColumnLabel('In what function was your role?')
    .setAllowMultiple(true)
    .setSortValues(true)
    .setLabelStacking(Charts.Orientation.VERTICAL)
    .setCaption('Choose a function')
    .setSortValues(true)
    .build();
   var titleFilter = Charts.newCategoryFilter()
    .setDataTable(dataTable)
    .setFilterColumnLabel('What was the role title?')
    .setAllowMultiple(true)
    .setSortValues(true)
    .setLabelStacking(Charts.Orientation.VERTICAL)
    .setCaption('Choose a title')
    .setSortValues(true)
    .build();
  var numberFilter = Charts.newCategoryFilter()
    .setDataTable(dataTable)
    .setFilterColumnLabel('Which placement was the role?')
    .setAllowMultiple(true)
    .setSortValues(true)
    .setLabelStacking(Charts.Orientation.VERTICAL)
    .setCaption('Choose a placement number')
    .setSortValues(true)
    .build();


  // Build individual tab charts
  // Tab 1: Role Specific
  var dataViewDef1 = Charts.newDataViewDefinition().setColumns([0, 1, 2, 3, 4, 5, 6, 7, 8]);
  var chart1 = Charts.newTableChart().setDataTable(dataTable).setOption('width', '100%').setOption('height', '100%').setDataViewDefinition(dataViewDef1).build();

  // Tab 2: Training
  var dataViewDef2 = Charts.newDataViewDefinition().setColumns([0, 1, 2, 3, 9, 10, 11]);
  var chart2 = Charts.newTableChart().setDataTable(dataTable).setOption('width', '100%').setOption('height', '100%').setDataViewDefinition(dataViewDef2).build();

  // Tab 3: Line Manager
  var dataViewDef3 = Charts.newDataViewDefinition().setColumns([0, 1, 2, 3, 12, 13]);
  var chart3 = Charts.newTableChart().setDataTable(dataTable).setOption('width', '100%').setOption('height', '100%').setDataViewDefinition(dataViewDef3).build();

  // Tab 4: Development Tools
  var dataViewDef4 = Charts.newDataViewDefinition().setColumns([0, 1, 2, 3, 14, 15]);
  var chart4 = Charts.newTableChart().setDataTable(dataTable).setOption('width', '100%').setOption('height', '100%').setDataViewDefinition(dataViewDef4).build();

  // Tab 5: Culture, Visas, and Moves
  var dataViewDef5 = Charts.newDataViewDefinition().setColumns([0, 1, 2, 3, 16, 17]);
  var chart5 = Charts.newTableChart().setDataTable(dataTable).setOption('width', '100%').setOption('height', '100%').setDataViewDefinition(dataViewDef5).build();

  // Create GUI
  var tabPanel = app.createTabPanel();
  var vpanel = app.createVerticalPanel().setSpacing(10);
  var scroll = app.createScrollPanel().setId('scroll').setSize('100%', '100%');

  tabPanel.add(chart1, 'Role Specific').add(chart2, 'Training').add(chart3, 'Line Manager').add(chart4, 'Development').add(chart5, 'Culture');
  tabPanel.selectTab(0);
  vpanel.add(locationFilter).add(functionFilter).add(titleFilter).add(numberFilter).add(tabPanel);

  var dashboard = Charts.newDashboardPanel().setDataTable(dataTable).bind([locationFilter, functionFilter, titleFilter, numberFilter], [chart1, chart2, chart3, chart4, chart5]).build();

  dashboard.add(vpanel);

  app.add(dashboard);

  return app;

}

截图可能会有所帮助。但根据所述错误消息的描述,当服务器发送
X-FRAME-OPTIONS:DENY
X-FRAME-OPTIONS:SameOrigin
头以防止帧时,您会看到这一点

此标题用于打击点击劫持攻击


有关详细信息,请参阅。

谷歌网站上的一个实验性脚本小工具在Chrome上运行良好,当在不同的计算机上运行IE11时,它给了我帧错误消息。 然后我意识到我是用另一个谷歌账户在那台计算机上登录的,并且我发布了“只有我”的脚本小工具。 我在“作为web应用部署”发布菜单中将此设置更改为“任何人”。
现在,我的脚本在IE11中运行良好,没有帧错误。

Hi@EricLaw,感谢您提供的信息。我在这里附加了一个屏幕截图:。我做了更多的研究,并注意到默认情况下,“插入”>“应用程序”脚本将应用程序脚本放在iframe中(通过单击“查看源代码”,您可以在站点上看到),因此没有办法不将其放在iframe中。现在,我已经将GAS加载到一个新页面中,在IE中显示,这是一个可行的解决方法,只是你会丢失标题和导航,所以实际上并不理想。是的,这是X-Frame-Options块页面。您可以使用Fiddler或其他网络调试器查看发送的确切HTTP头值。