【问题标题】:How can I output HTML from a Google Apps Script?如何从 Google Apps 脚本输出 HTML?
【发布时间】:2015-01-01 04:51:13
【问题描述】:

我有这个简单的脚本来获取一个页面并将其输出不变。但是,浏览器不会将输出识别为 HTML 并将其显示为文本。

function doGet(e) {
  var url = e.queryString || "";
  if (url != "") {
    return getPage(url);
  }  
  return "not found";
}

function test() {
  return getPage("www.google.com");
}

function getPage(url) {
  var options = {
    headers : {'Cache-Control' : 'max-age=0'}
  };
  var response = UrlFetchApp.fetch(url, options);
  var html = response.getContent();
  return ContentService.createTextOutput(html).setMimeType(ContentService.MimeType.HTML);
}

怎么了?如何将获取的页面输出为 HTML?

【问题讨论】:

标签: html google-apps-script web-applications


【解决方案1】:

在您的 getPage() 函数中使用此返回值:

var html = response.getContentText();
return HtmlService.createHtmlOutput(html);

但是,不要期望获取的页面是“不变的” - HTML 服务会清理内容,这可能会导致某些页面功能被删除或无法正常工作。

另外请记住,您的 Web 应用程序是在 iframe 内呈现的 - 您获取的页面可能不允许它在 iframe 中运行或使用框架中断 javascript,这可能会导致您的用户被重定向离开您的web 应用程序到获取页面的实际 url。

不过,我必须问:您确定您必须以这种方式呈现外部页面吗?一个简单的<a href="..." target="_blank">link to external page (will open in a new tab/window)</a> 不够吗?

【讨论】:

  • "不会很简单..." 这是为了获取可能被阻止的页面。我更改了return 以使用您的建议,但现在我得到的只是获取的每个页面的可变长度的逗号分隔整数字符串。这是获取 stackoverflow.com 时显示为 ASCII 值的小样本:60,33,68,79,67,84,89,80,69,32,104,116,109,108,62,13,10,60,104,116,109,108,62,13,10,60,104,101,97,100,62,13,10,32,32,32,32,13,10,32,32,32,32,60,116,105,116,108,101,62,83,116,97,99,107,32,79,118,101,114,102,108,111,119,60,47,116,105,116,108,101,62,13,10,32,32,32,32,60,108,105,110,107,32,114
  • 抱歉,应该是.getContentText() 而不是.getContent()。我也编辑了答案中的代码。
  • 修复了它。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多