App Launchers can be very useful to organize your apps:
But when you have a LOT of apps, it can take a while to collect all the names, URLs, and images.
You can copy data from the My Account/App Info page, but it doesnโt quite have everything in a useable format.
I was making a launcher for a client with a LOT of apps, and needed a better way to pull this info. So I developed a few techniques to get the data, and came up with some pretty cool tricks I wanted to share.
Hereโs how to extract the images and app Idโs quickly and easily:
Formula from video for reference:
=INDEX(IMPORTXML("https://www.appsheet.com/start/"&E2,"//img/@src"),2)
The above method only works for apps owned by the account in question. Shared apps donโt show up in the same screen to be easily copy-able.
I just wrote this python code to scrape the HTML page at My Apps - AppSheet
and output a semicolon-separated file with:
appname ; appid ; displayname ; logo-URL
Not incredibly user-friendly, but Iโm tired of working on it for now
Hereโs the python code:
import sys
from lxml import html
#enter input html filename here
FILENAME_IN = 'my-apps.html'
#enter output filename here
# I used '.csv' extension, even those I'm de-limiting by semi-colon. proper? who knows...
FILENAME_OUT = 'apps.csv'
#sections of apps to include. mainly to exclude "quickstart"
sections = ["prototype-apps" , "shared-apps" , "deployed-apps"]
f = open(FILENAME_IN , 'r')
ff = f.read()
tree = html.fromstring(ff)
with open(FILENAME_OUT , 'w') as f:
ogout = sys.stdout
sys.stdout = f
for s in sections:
section = tree.xpath('//section[@id="'+s+'"]')[0]
cardList = section.xpath('.//div[@class="app-card-list"]')[0]
for a in cardList.xpath('.//div[contains(@class, "app-card")]'):
appName = a.get("class").replace("app-card " , "")
displayName = a.xpath('.//button[@class="CloneButton"]')[0].get("data-shortname")
appID = a.get("id").replace("appcard-","")
line = appName + ";" + appID + ";" + displayName
img = a.xpath('.//img')
if img:
line = line + ";" + img[0].get("src")
print(line)
sys.stdout = ogout