0

I'm new in creating Outlook Add-In and I'm using Node.js on my project, I dont know whats wrong with my code using Event Handler for Item Send Event, but its not working at all, can anyone help me with my project, please....

manifest.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OfficeApp xmlns="http://schemas.microsoft.com/office/appforoffice/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bt="http://schemas.microsoft.com/office/officeappbasictypes/1.0" xmlns:mailappor="http://schemas.microsoft.com/office/mailappversionoverrides/1.0" xsi:type="MailApp">
  <Id>470141da-c6df-4f45-b860-867cf2c96f79</Id>
  <Version>1.0.0.0</Version>
  
  <ProviderName>QuickBase</ProviderName>
  <DefaultLocale>en-US</DefaultLocale>
  <DisplayName DefaultValue="QuickBase"/>
  <Description DefaultValue="This Add-In let you send email data to QuickBase Documents Table."/>
  <IconUrl DefaultValue="https://localhost:3000/assets/icon-64.png"/>
  <HighResolutionIconUrl DefaultValue="https://localhost:3000/assets/icon-128.png"/>
  <SupportUrl DefaultValue="https://localhost:3000/help"/>
  <AppDomains>
    <AppDomain>https://localhost:3000</AppDomain>
  </AppDomains>
  <Hosts>
    <Host Name="Mailbox"/>
  </Hosts>
  <Requirements>
    <Sets>
      <Set Name="Mailbox" MinVersion="1.1"/>
    </Sets>
  </Requirements>
  <FormSettings>
    <Form xsi:type="ItemRead">
      <DesktopSettings>
        <SourceLocation DefaultValue="https://localhost:3000/taskpane.html"/>
        <RequestedHeight>250</RequestedHeight>
      </DesktopSettings>
    </Form>
  </FormSettings>
  <Permissions>ReadWriteMailbox</Permissions>
  <Rule xsi:type="RuleCollection" Mode="Or">
    <Rule xsi:type="ItemIs" ItemType="Message" FormType="Read"/>
  </Rule>
  <DisableEntityHighlighting>false</DisableEntityHighlighting>
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides" xsi:type="VersionOverridesV1_0">
  <!-- On Send requires VersionOverridesV1_1 -->
  <VersionOverrides xmlns="http://schemas.microsoft.com/office/mailappversionoverrides/1.1" xsi:type="VersionOverridesV1_1">
    <Requirements>
      <bt:Sets DefaultMinVersion="1.3">
        <bt:Set Name="Mailbox"/>
      </bt:Sets>
    </Requirements>
    <Hosts>
      <Host xsi:type="MailHost">
        <DesktopFormFactor>
          <FunctionFile resid="Commands.Url"/>

          <!-- Message Read -->
          <ExtensionPoint xsi:type="MessageReadCommandSurface">
            <OfficeTab id="TabDefault">
              <Group id="msgReadGroup">
                <Label resid="GroupLabel"/>
                <Control xsi:type="Button" id="msgReadOpenPaneButton">
                  <Label resid="TaskpaneButton.Label"/>
                  <Supertip>
                    <Title resid="TaskpaneButton.Label"/>
                    <Description resid="TaskpaneButton.Tooltip"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Icon.16x16"/>
                    <bt:Image size="32" resid="Icon.32x32"/>
                    <bt:Image size="80" resid="Icon.80x80"/>
                  </Icon>
                  <Action xsi:type="ShowTaskpane">
                    <SourceLocation resid="Taskpane.Url"/>
                  </Action>
                </Control>
                <!-- <Control xsi:type="Button" id="ActionButton">
                  <Label resid="ActionButton.Label"/>
                  <Supertip>
                    <Title resid="ActionButton.Label"/>
                    <Description resid="ActionButton.Tooltip"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Icon.16x16"/>
                    <bt:Image size="32" resid="Icon.32x32"/>
                    <bt:Image size="80" resid="Icon.80x80"/>
                  </Icon>
                  <Action xsi:type="ExecuteFunction">
                    <FunctionName>action</FunctionName>
                  </Action>
                </Control> -->
              </Group>
            </OfficeTab>
          </ExtensionPoint>

          <!-- Message Compose -->
          <ExtensionPoint xsi:type="MessageComposeCommandSurface">
            <OfficeTab id="TabDefault">
              <Group id="msgComposeCmdGroup">
                <Label resid="GroupLabel"/>
                <Control xsi:type="Button" id="msgComposeInsertGist">
                  <Label resid="TaskpaneButton.Label"/>
                  <Supertip>
                    <Title resid="TaskpaneButton.Title"/>
                    <Description resid="TaskpaneButton.Tooltip"/>
                  </Supertip>
                  <Icon>
                    <bt:Image size="16" resid="Icon.16x16"/>
                    <bt:Image size="32" resid="Icon.32x32"/>
                    <bt:Image size="80" resid="Icon.80x80"/>
                  </Icon>
                  <Action xsi:type="ShowTaskpane">
                    <SourceLocation resid="Taskpane.Url"/>
                  </Action>
                </Control>
              </Group>
            </OfficeTab>
          </ExtensionPoint>

          <!-- Message ItemSend Event -->
          <ExtensionPoint xsi:type="Events">
            <Event Type="ItemSend" FunctionExecution="synchronous" FunctionName="onItemSend" />
          </ExtensionPoint>
        </DesktopFormFactor>
      </Host>
    </Hosts>
    <Resources>
      <bt:Images>
        <bt:Image id="Icon.16x16" DefaultValue="https://localhost:3000/assets/icon-16.png"/>
        <bt:Image id="Icon.32x32" DefaultValue="https://localhost:3000/assets/icon-32.png"/>
        <bt:Image id="Icon.80x80" DefaultValue="https://localhost:3000/assets/icon-80.png"/>
      </bt:Images>
      <bt:Urls>
        <bt:Url id="Commands.Url" DefaultValue="https://localhost:3000/commands.html"/>
        <bt:Url id="Taskpane.Url" DefaultValue="https://localhost:3000/taskpane.html"/>
      </bt:Urls>
      <bt:ShortStrings>
        <bt:String id="GroupLabel" DefaultValue="QuickBase"/>
        <bt:String id="TaskpaneButton.Label" DefaultValue="Use Add-In"/>
        <bt:String id="TaskpaneButton.Title" DefaultValue="Use Add-In"/>
        <!-- <bt:String id="ActionButton.Label" DefaultValue="Insert default gist"/>
        <bt:String id="ActionButton.Title" DefaultValue="Insert default gist"/> -->
      </bt:ShortStrings>
      <bt:LongStrings>
        <bt:String id="TaskpaneButton.Tooltip" DefaultValue="Send email information to QuickBase and create a record of the email."/>
        <!-- <bt:String id="ActionButton.Tooltip" DefaultValue="Inserts the content of the gist you mark as default into the current message."/> -->
      </bt:LongStrings>
    </Resources>
  </VersionOverrides>
  </VersionOverrides>
</OfficeApp>

taskpane.js

Office.onReady((info) => {
  if (info.host === Office.HostType.Outlook) {
    document.getElementById("sideload-msg").style.display = "none";
    document.getElementById("app-body").style.display = "flex";
    document.getElementById("run").onclick = run;
  }

  Office.context.mailbox.addHandlerAsync(Office.EventType.ItemSend, function (eventArgs) {
    eventArgs.completed({ allowEvent: true }); // allow the event to continue
    var item = Office.context.mailbox.item;
    var subject = item.subject;
    item.saveAsync(function (asyncResult) {
      if (asyncResult.status == Office.AsyncResultStatus.Succeeded) {
        var url = asyncResult.value.getRestUrl();
        console.log("Subject: " + subject);
        console.log("URL: " + url);
      } else {
        console.error("Failed to save item.");
      }
    });
  });
});

the onItemSend function doesn't work after pressing the Send button on composing a new email from Outlook, I tried adding a API Request to the function but it doesn't work, whats seems to be the problem with my code?

1 Answer 1

0

In your manifest you specified the function file in the following way:

 <FunctionFile resid="Commands.Url"/>

where the string value is defined below:

<bt:Url id="Commands.Url" DefaultValue="https://localhost:3000/commands.html"/>

So, you need to define the callback in the commands.js file. That is where the Office runtime will be looking for the callback.

Read more about the ItemSend event in the On-send feature for Outlook add-ins article.

Sign up to request clarification or add additional context in comments.

2 Comments

The updated my add-in now when I run the add-in on the windows app its says that The add-in is preventing this message from being sent, the callback function is unreachable. on web app its says We're sorry, we couldn't access QuickBase. Make sure you have a network connection. If the problem continues, please try again later. and The add-in QuickBase has prevented this item from being sent.
I updated my post above for the xml and js file, I hope you can help me out.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.