2

我的目标是从特定帐户获取电子邮件并将其作为公告发布在网站上。我已经做到了这一点。但是,有一个独特的场景,带有附加信息的电子邮件将以相同的主题出现(主题是帖子的标题)。我也需要获取它并将其发布为公告。但是 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();
4

1 回答 1

0

当您手动创建具有相同名称的多个公告帖子时,站点 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在标题或文本中的任意位置查找带有字符串的所有公告。这可能比您想要的更具包容性。name在这种情况下,另一种方法是使用createAnnouncement() 的这个变体来接管公告页面的创建。

于 2013-05-14T12:59:55.630 回答