Как обновить содержимое поля приложения PowerApps, которое представляет последнее полученное электронное письмо

#powerapps

#powerapps

Вопрос:

Я создал приложение с использованием Microsoft PowerApps, которое отображает последнее полученное электронное письмо из почтового ящика Office365. Я использовал эту функцию:

 Office365Outlook.GetEmails({folderPath:"Inbox/TargetedInboxFolder", fetchOnlyUnread:false, top:1})
  

Но проблема в том, что мое приложение не будет автоматически обновлять поле для тела электронного письма ThisItem.BodyPreview . Я получаю текст последнего полученного электронного письма только при перезапуске своего приложения.
Как обновить содержимое этого поля, когда Office365 получает новое электронное письмо в folderPath: "Inbox/TargetedInboxFolder" подпапке «Входящие», без перезапуска приложения?

Ответ №1:

Я не думаю, что вы можете получить автоматическое обновление, даже если вы должны были создать поток, запускаемый при добавлении нового электронного письма.

Чтобы обновить вручную, добавьте в свое приложение кнопку «обновить».

Установите для его OnSelect свойства значение:

 ClearCollect(colLastEmail,
  Office365Outlook.GetEmails(
    {
      folderPath:"Inbox/TargetedInboxFolder",
      fetchOnlyUnread:false, top:1
    }
)
  

Затем установите для Items свойства вашей галереи значение colLastEmail .

Комментарии:

1. Как установить для элементов моей галереи значение colLastEmail. Что это значит? Чтобы выбрать элементы из меню выбора и ввести в поле fx colLastEmail?

2. «Галерея» — это элемент управления (например, кнопка, текстовое поле или метка) в PowerApps. Каждый элемент управления имеет набор свойств, для которых вы пишете свои функции. Выберите соответствующую галерею в «древовидном представлении», затем выберите ее Items свойство из выпадающего меню.

3. Я уже сделал это, но у меня ошибка в строке формул. colLastEmail недействителен. Идентификатор не распознан.

4. Эта ошибка обычно указывает на пропущенную запятую, отсутствующую скобку ИЛИ название вашей коллекции отличается от того, которое я предложил выше. Вам нужно показать код / ошибку, если вы хотите, чтобы мы помогли здесь в дальнейшем.

5. Спасибо. На самом деле ошибка в скобках отсутствует. Я исправил это, и теперь все работает нормально.

Ответ №2:

Как сказал SeaDude, это не будет обновляться автоматически, но вы можете использовать таймер в приложении. Установите следующие свойства

  1. Автозапуск: верно
  2. Повторение: верно
  3. Длительность: устанавливается на интервал времени между обновлениями в миллисекундах. Таким образом, 10 секунд будут равны 10000. Я бы установил не менее 1 минуты (60000), но, вероятно, лучше дольше.
  4. Видно: false

Установите свойство OnTimerEnd для сбора времени отправки электронной почты

 ClearCollect(colLastEmail,
 Office365Outlook.GetEmails(
   {
     folderPath:"Inbox/TargetedInboxFolder",
     fetchOnlyUnread:false, top:1
   }
)
  

А затем настройте свою галерею на использование коллекции ColLastLEmail.