cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
NachoMas
Level: Powered On

App link is not working from SharePoint

I have a powerapp that is launched from a JS link on a SPO site page.

 

When I click the link to the app, it works.

When another user clicks the same link to the app, it just spins.  User can login to powerapps, and see the app listed.  And launch it.  (App requires a parameter)  But when they click the link on the SP page, it tries to load powerapps, but it just spins with the blue circle of death.

 

If I give the user a direct link to the app manually adding the parameter, IT WORKS! (Why?)

 

I had the user add all the powerapps domain from this link.
https://support.microsoft.com/en-us/help/4023606/troubleshooting-startup-issues-in-powerapps-web-aut...

 

 

Here is the JS code for the link.  Again, works fine for me, not the user.

 

 

<script type="text/javascript">
    document.addEventListener("DOMContentLoaded", function (event) {
        var a = document.getElementById("idDocSetPropertiesWebPart");
        if (a) {
            var b = a.getElementsByTagName("tr")[4]
            if (b) {
                var c = b.getElementsByTagName("td")[2];
                if (c) {
					c.innerHTML = "<pre class=\"ms-headerFont ms-standardheader\">" + c.innerHTML + "</pre>";
                }
            }
        }
    });
</script>
<script type="text/javascript">
    function getCurrentItem(context, web, list, success, error) {
        // Get List Item ID
        var itemId = parseInt(GetUrlKeyValue('ID'));
        var listItem = list.getItemById(itemId);

		// Load context
        context.load(listItem);

		// Execute query
		context.executeQueryAsync(
			function () {
				success(listItem);
			},
			error
		);
    }

	function getCurrentTasks(context, web, list, success, error) {
		var itemId = parseInt(GetUrlKeyValue('ID'));
		var query = new SP.CamlQuery();
		var viewXml = "<View><Query><Where><And><Eq><FieldRef Name='AssignedTo' LookupId='TRUE' /><Value Type='Integer'><UserID /></Value></Eq><Eq><FieldRef Name='WorkflowItemId' /><Value Type='Integer'>" + itemId + "</Value></Eq></And></Where><OrderBy><FieldRef Name='Created' Ascending='FALSE'/></OrderBy></Query><RowLimit>1</RowLimit></View>";
		query.set_viewXml(viewXml);

		listItems = list.getItems(query);

		//Load context
		context.load(listItems);

		//Execute query
		context.executeQueryAsync(function () { success(listItems); }, Function.createDelegate(this, error));
	}

    function StartWorkflow() {
        var context = SP.ClientContext.get_current();
        var web = context.get_web();

        // Get List
        var listGuid = _spPageContextInfo.pageListId;
        var list = web.get_lists().getById(listGuid);

        // Get List Item ID
        var itemId = parseInt(GetUrlKeyValue('ID'));

        getCurrentItem(context, web, list, function (listItem) {
            var itemGuid = listItem.get_item("GUID");

            //Workflow Services Manager
            var wfServicesManager = new SP.WorkflowServices.WorkflowServicesManager(context, web);

            //Workflow Interop Service used to interact with SharePoint 2010 Engine Workflows
            var interopService = wfServicesManager.getWorkflowInteropService()

            //Initiation Parameters have to be in a plain JS Object.
            var initiationParameters = {};

            //Start the Site Workflow by Passing the name of the Workflow and the initiation Parameters.
            var result = interopService.startWorkflow("Ready for Approval", SP.Guid.newGuid(), listGuid, itemGuid, initiationParameters);
            context.executeQueryAsync(
                function (sender, args) {
                    alert("This CAR has been successfully submitted for approval.");
                },
                function () {
                    alert("Error starting workflow. Please notify Jeannie manually.")
                });
        },
        function () {
            alert("Error getting list item.");
        }
      );
    }

    function ButtonClicked() {
        SP.SOD.executeFunc("sp.js", "SP.ClientContext", function () {
            SP.SOD.registerSod('sp.workflowservices.js', SP.Utilities.Utility.getLayoutsPageUrl('sp.workflowservices.js'));
            SP.SOD.executeFunc('sp.workflowservices.js', "SP.WorkflowServices.WorkflowServicesManager", StartWorkflow);
        });
    }
	function btnAdminClicked() {
		var listGuid = _spPageContextInfo.pageListId;
		var itemId = parseInt(GetUrlKeyValue('ID'));

		window.location.href = "https://web.powerapps.com/apps/d4019a4a-c38f-4b57-9aaa-925cd81f5f9c?itemid=" + itemId;
    }
    function btnApprovalsClicked() {
        window.location.href = "https://us.flow.microsoft.com/manage/environments/Default-3b714df2-68c1-4ec5-bbb9-07273d9df641/approvals/received";
    }
    function btnQuestionsClicked() {
        var listGuid = _spPageContextInfo.pageListId;
        var itemId = parseInt(GetUrlKeyValue('ID'));

    window.location.href = "https://web.powerapps.com/apps/251d5352-3630-44cf-87fe-b42ddcad0dad?CARID=" + itemId;
    }


</script>

<button id="btnReadyForApproval" onclick="ButtonClicked()" style="width:130px; margin-left:0px;" disabled="disabled">Ready to Submit</button>
<input type='button' id="btnApprovals" onclick="btnApprovalsClicked()" style="width:130px; margin-left:0px;" value='Approvals' />
<input type='button' id="btnAdmin" onclick="btnAdminClicked()" style="width:130px; margin-left:0px;" value='Admin' />
<input type='button' id="btnQuestions" onclick="btnQuestionsClicked()" style="width:130px; margin-left:0px;" value='Questions' />

<script type="text/javascript">
    window.onload = function () {
        var context = SP.ClientContext.get_current();
        var web = context.get_web();

        var listGuid = _spPageContextInfo.pageListId;
        var carList = web.get_lists().getById(listGuid);

        getCurrentItem(context, web, carList, function (listItem) {
            var status = listItem.get_item("CARStatus");
            if (status == "Draft" || status == "Rejected") {
                document.getElementById('btnReadyForApproval').disabled = false;
            } else {
                document.getElementById('btnReadyForApproval').disabled = true;
            }
        },
        function () {

        });

		var taskList = web.get_lists().getByTitle("Tasks");
		context.load(taskList, 'Id');
		getCurrentTasks(context, web, taskList,
		function(listItems) {
			var enumerator = listItems.getEnumerator();
			while(enumerator.moveNext()) {
				var item = enumerator.get_current();
				var listId = taskList.get_id();
				var itemId = item.get_id();

				var button = document.createElement('input');
				button.type = 'button';
				button.style = "width:130px; margin-left:5px;";
				button.onclick = function () { btnTaskClicked(listId, itemId); };
				button.value = "Task";

				var approvalButton = document.getElementById('btnApprovals');
				approvalButton.parentNode.insertBefore(button, approvalButton.nextSibling);
			}
		},
		function (sender, args) {});
    }
</script>
1 REPLY 1
NachoMas
Level: Powered On

Re: App link is not working from SharePoint

Consider this resolved.  I found that the content type had not pushed down the changes to the document set that has the link.  So it was really a SharePoint problem.  I was fooled by the fact that the wrong linked worked for me, but the app looked exactly the same. (dev vs prod)  I looked at the page source to determine that it was in fact the wrong link.

Helpful resources

Announcements
firstImage

Watch Sessions On Demand!

Continue your learning in our online communities.

SecondImage

Follow PowerApps on Twitter

Stay Up-to-Date by following PowerApps on Twitter

Top Community Contributors for July 2019

Top Community Contributors for July 2019

Let's thank our top community contributors

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

FirstImage

Power Platform World Tour

Coming to a city near you

thirdimage

PowerApps Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

FourthImage

Join PowerApps User Group!!

Connect, share, and learn with your peers year-round

FifthImage

Dynamics 365 and Power Platform April 2019 Release notes

Features releasing from April 2019 through September 2019!

Top Kudoed Authors
Users Online
Currently online: 40 members 4,122 guests
Please welcome our newest community members: