无法使用Google Apps脚本中的创建通知发布具有相同标题的公告

时间:2012-11-27 05:07:21

标签: google-apps-script

我的目标是从特定帐户中提取电子邮件,并将其作为公告发布在网站上。我已经完成了这个。但是,有一个独特的场景,其中包含相同主题的电子邮件将显示(主题是帖子的标题)。我需要获取此信息并将其作为公告发布。但是,createAnnouncements会抛出一条错误,指出帖子已经存在。但是我可以手动发布两个标题相同的帖子。

我尝试了很多东西,比如getAnnouncements和getAllDecedents,但是没有任何东西可以达到我的目的或接近它。

有没有办法我可以删除旧帖子并创建新帖子或者有没有办法可以使用createAnnouncements发布具有相同标题的邮件?在这方面的任何帮助将非常感谢。

我在下面加了我的代码药水。

      var pageTitlePattern = /^\[.*\] \[/;
      var pageTitleArray = pageTitlePattern.exec(messageSubject);
      var pageTitle = pageTitleArray[0].substr(1,pageTitleArray[0].length - 4);

      var messageIdPattern = /\] \[.*\]$/;
      var messageIdArray = messageIdPattern.exec(messageSubject);
      var messageId = messageIdArray[0].substr(3,messageIdArray[0].length - 4);
      var postBody = formatMessage(message, false) + "<br>" + "<font color=\"#ffffff\">" + messageId + "</font>";
      var newAccouncement = postPage.createAnnouncement(pageTitle, postBody);
      var files = message.getAttachments();
      for (var k = 0; k < files.length; k++) {
        newAccouncement.addHostedAttachment(files[k]);
        cabinetPage.addHostedAttachment(files[k]);
      }
      message.markRead();

1 个答案:

答案 0 :(得分:0)

当您手动创建具有相同名称的多个公告帖子时,Sites UI会通过附加连字符和整数自动使公告的路径唯一。

例如,如果您创建两个标题为“TestPost”的帖子,则会将这些页面添加到您的网站中:

https://sites.google.com/site/--site-id--/announcements/testpost
https://sites.google.com/site/--site-id--/announcements/testpost-1

我建议您的脚本执行类似。

...
var pageTitlePattern = /^\[.*\] \[/;
var pageTitleArray = pageTitlePattern.exec(messageSubject);
var pageTitle = pageTitleArray[0].substr(1,pageTitleArray[0].length - 4);

// Check if this pageTitle already used
var announcements = page.getAnnouncements({ 
                                         includeDrafts: false,
                                         includeDeleted: false,
                                         search: pageTitle });
// If other announcements have already used this pageTitle,
// make ours unique by appending a hyphen and unique number
if (announcements.length > 0) {
  pageTitle += '-' + announcements.length;
}
...

page.getAnnouncements()搜索不区分大小写,并在标题或文本中的任何位置查找字符串pageTitle的所有公告。这可能比您想要的更具包容性。在这种情况下,另一种方法是使用this variant of createAnnouncement()接管创建公告页面name