【问题标题】:Exporting Google spreadsheet to RSS format using Google Apps Script使用 Google Apps 脚本将 Google 电子表格导出为 RSS 格式
【发布时间】:2017-03-27 12:55:17
【问题描述】:

我正在尝试使用 Google Apps 脚本将 google 电子表格导出到 RSS。这是我的谷歌表:

https://docs.google.com/spreadsheets/d/15fwOeR6Jo4UadzOTlryTucgI3ZFZ5IVM16GDSwA0XE0/edit?usp=sharing

这是我的谷歌应用程序脚本代码:

function doGet() {
 var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/15fwOeR6Jo4UadzOTlryTucgI3ZFZ5IVM16GDSwA0XE0/edit#gid=0');
 SpreadsheetApp.setActiveSpreadsheet(ss);
 SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);
 var title = ss.getSheets()[0].getRange("A1:A3").getValues();

var rss='<?xml version="1.0" encoding="utf-8"?>';
  rss+='<feed xmlns="http://www.w3.org/2005/Atom">';
  rss+='<title>testtile </title>';
  rss+='<link href="www.google.com"/>';
  rss+='<id>http://nexcono.appspot.com/frase/</id>';   
  for(var i=1;i<title.length;i++){
    rss+='<entry>';
    rss+='<title>sometitle '+title[i][0]+'</title>';
    rss+='<link rel="alternate" href="http://apple.com"/>';
    rss+='<id>http://nexcono.appspot.com/frase/'+'</id>';
    rss+='</entry>';
  }
   rss+='</feed>';
   return ContentService.createTextOutput(rss).setMimeType(ContentService.MimeType.RSS);
}

但是,当我使用 https://validator.w3.org/feed/ 进行验证时,它说它不是一个 vlid RSS :(

非常感谢,

【问题讨论】:

    标签: google-apps-script rss


    【解决方案1】:

    模板化的 HTML 可用于您的脚本。参考网址是https://developers.google.com/apps-script/guides/html/templates

    var title;
    function doGet() {
      var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/15fwOeR6Jo4UadzOTlryTucgI3ZFZ5IVM16GDSwA0XE0/edit#gid=0');
      SpreadsheetApp.setActiveSpreadsheet(ss);
      SpreadsheetApp.setActiveSheet(ss.getSheets()[0]);
      title = ss.getSheets()[0].getRange("A1:A2").getValues();
      var template = HtmlService.createTemplateFromFile('template');
      var rss = template.evaluate();
      return ContentService.createTextOutput(rss.getContent()).setMimeType(ContentService.MimeType.XML);
    }
    

    模板html如下。文件名为“template.html”。请使用上述脚本在项目中进行此操作。

    <rss version="2.0"
      xmlns:rss="http://purl.org/rss/1.0/"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
    <title>testtile </title>
    <link href="www.google.com"/>
    <id>http://nexcono.appspot.com/frase/</id>
    <? for(var i=0;i<title.length;i++){ ?>
    <entry>
    <title>sometitle '+ <?= title[i][0] ?> +'</title>
    <link rel="alternate" href="http://apple.com"/>
    <id>http://nexcono.appspot.com/frase/'+'</id>
    </entry>
    <? } ?>
    </channel>
    </rss>
    

    【讨论】:

      【解决方案2】:

      据我所知,问题是这样的:

      出于安全原因,内容服务返回的内容不是从 script.google.com 提供的,而是重定向到 script.googleusercontent.com 的一次性网址。这意味着如果您使用内容服务将数据返回到另一个应用程序,则必须确保将 HTTP 客户端配置为遵循重定向。1

      该脚本适用于浏览器(Firefox、Opera 等),但没有 RSS 阅读器识别它。所以,在那里,不知道如何绕过它,但你已经成功了一半。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多