2

私の目的は、特定のアカウントからメールを取得し、サイトにお知らせとして投稿することです。私はこれを達成しました。ただし、追加情報を含む電子メールが同じ件名 (件名は投稿のタイトル) で表示されるという固有のシナリオがあります。これを取得して、お知らせとしても投稿する必要があります。ただし、 createAnnouncements は、投稿が既に存在するというエラーをスローします。ただし、同じタイトルの 2 つの投稿を手動で投稿できます。

私は 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」というタイトルの投稿を 2 つ作成すると、これらのページがサイトに追加されます。

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、タイトルまたはテキストのどこかに文字列が含まれるすべてのアナウンスが検索されます。これは、必要以上に包括的である可能性があります。その場合、別の方法として、 createAnnouncement() のこのバリアントをname使用してアナウンスのページの作成を引き継ぐことができます。

于 2013-05-14T12:59:55.630 に答える