Forum Discussion

THEG72's avatar
THEG72
Helper V
8 years ago
Solved

Cannot Apply operator Text and List Conversion required? or syntax error with Parameter usages

Hi Community I am trying to paremterise the file path for a json source,

Query which lists path requiredhe data source for json source.

I have above query which returns a list containing the file path of the data source as follows:

 

I want to insert this query called "URIPathLocation" into the Web.Contents path but i am getting an error stating

Expression.Syntax.Token Literal Expected.

 

= Json.Document(Web.Contents(" & URIPathLocation & "/Contact/Customer/?api-version=v2"))

How do you add a query ouputting a list into text field...is there a conversion required from Type to list

 

 

Originally, I can get the statement to work as follows, where i manually key the first part and then create a SelectCompany query to choose the ID number (that appears after the Accountright folder name above). The select company parameter is where i manually type in the URI d2c78098-1f9c-xxxxxxx etc. which chooses the company file.

 

I originally was using the following command, which works fine...but only gets the URI and not the path...I am sure its a formatting issue !

 

Json.Document(Web.Contents("http://localhost:8080/AccountRight/" & SelectCompany & "/Contact/Supplier/?api-version=v2"))

 

 ==================

Update !

 

It seems the main issue is when you put the text in a query that outputs a list you get an error .

 

Expression.Error: We cannot apply operator & to types Text and List.
Details:
Operator=&
Left=http://localhost:8080/AccountRight/
Right=List

 

When you create a parameter with a text List of values the expression works with out an issue but its not dynamic.

 

Is there a way to convert the query that outputs a list to a text string that will be accepted by the command below

Json.Document(Web.Contents(

 

  • Your formula is passing a static string:

    Json.Document(Web.Contents("URIPath&/Contact/Supplier/?api-version=v2"))

    and I believe that you're going after something like:

    Json.Document(Web.Contents(Text.From(URIPath)&"/Contact/Supplier/?api-version=v2"))

7 Replies

  • Hi THEG72,

     

    In your scenario, what will Web.Contents() return without Json.Document?

     

    Web.Contents("http://localhost:8080/AccountRight/" & SelectCompany & "/Contact/Supplier/?api-version=v2")

    Thanks,
    Xi Jin.

    • THEG72's avatar
      THEG72
      Helper V

      It returns the object, then you right click it and return the output to a Json format to get the original code shown below.

       

       

      = Json.Document(Web.Contents(DataLocation & SelectCompanyURI & "/Contact/Supplier/?api-version=v2"))

      I have the following Parameters defined:

      DataLocation "http://localhost:8080/AccountRight/"  (Text Based List of Values Manually entered)

      SelectCompanyURI  "d2c78098-1f9c-4334-aee9-27349b3ed6a4'" (Text Based List of Values manually entered)

       

      The Datalocation api endpoint return the path required for each company file resource when you initially browse the list, convert it to a table and you can see the path required for the Web Contents code.

       

      If i select the path and either Drill Down or Add as A query, how can i add this to the web.contents code line? I think I am missing some quotes maybe?


      The code below returns an error, I assume i have the syntax incorrect

      DataFormat.Error: Invalid URI: The hostname could not be parsed. Details: URIPath&/Contact/Supplier/?api-version=v2

       

      Json.Document(Web.Contents("URIPath&/Contact/Supplier/?api-version=v2"))

      This line does work

      http://localhost:8080/AccountRight/d2c78098-1f9c-4334-aee9-27349b3ed6a4/Contact/Supplier/?api-version=v2

       

       

      URI Path http://localhost:8080/AccountRight/d2c78098-1f9c-4334-aee9-27349b3ed6a4

       

       

      Thanks

       

       

      • miguel's avatar
        miguel
        Community Admin

        Your formula is passing a static string:

        Json.Document(Web.Contents("URIPath&/Contact/Supplier/?api-version=v2"))

        and I believe that you're going after something like:

        Json.Document(Web.Contents(Text.From(URIPath)&"/Contact/Supplier/?api-version=v2"))