I’m building an app based on a list of about 8,000 English words that students of English should know. Detail views in the app have hyperlinks that take the user to external websites where the key term will be looked up automatically. In this little tip I’d like to show two ways of doing this. One relies exclusively on virtual columns and the other only uses real columns. I’m assuming that the second method would yield better performance, particularly on devices that are not very powerful, but I hope to get that confirmed by any experts who might do me the favor of looking at this tip.
Method one: Hypertext virtual column
Make a virtual column with a formula such as the following:
. . . to look a word up in Merriam-Webster’s online dictionary
. . . to look something up on Oxford Learner’s Dictionay
HYPERLINK(Concatenate("https://www.oxfordlearnersdictionaries.com/definition/english/",substitute([Your Word]," ","-")),concatenate("Oxford Learner's Dictionaries"))
Note that any spaces will need to be replaced with “-” on this website if you have two or more words separated by spaces. Space separation is handled differently on different sites. You might need to use INDEX(SPLIT([Your Word]," "),1) to select just the first word some sites. Or, you may need to replace spaces with “+”. You just need to experiment with the URL to see how your target site works.
. . . to do a Google Image search for your word
HYPERLINK(concatenate("https://www.google.com/search?hl=en&q=",[Your word],"&source=lnms&tbm=isch"),"Google Images")
. . . to do a Google news search for it
HYPERLINK(concatenate("https://news.google.com/news?q=",[Your word],"&hl=en"),"Google News")
All of these virtual columns will make linking actions that you can use in your app. Moreover, if you adjust the formula in your virtual column, the behavior of the action will be adjusted automatically.
Method two: Avoiding virtual columns
If you make an action directly (no intervening virtual column), you can use the CONCATENATE() part of the formulas above in the “URL Target” slot. Then, if you know, for example, that you always want the text “Merriam-Webster” to show for that dictionary link, you can put the text “Merriam-Webster” in a real column and then put your action on that column as a Display Inline action. This completely eliminates the virtual column, making everything either a real text column or an action.
The virtual column method seems to be the conventional one. AppSheet, for example, has a sample app that shows how to make an external link with a virtual column:
However, my app has about 8,000 words to be looked up and links to about 25 different external resources per word. The app seems to work well on my computer and on my iPhone (even my legacy iPhone 6) but it’s so slow as to be unusable on my Android device. My question is: On an app with many rows and many links, can I expect significantly better performance from method two than from method one? The number of real columns in the table will increase (I need them to “hang” my hyperlinks on) but the number of virtual columns will decrease by the same number.