ContributionsMost RecentMost LikesSolutionsApp Load Timeouts and app performance issues I've recently been experiencing what are called "app load timeouts", where I will open one of my apps and rather than loading (even if it takes a few seconds), I instead get an error message or something like, "App waiting to load." In order to actually get the app to load, I need to either refresh my page or click on the app title link in the top-left. Although the page never loads if I simply wait, it will load immediately when I prompt a refresh. I inquired with Customer Support and they explained that this is something new, implemented on the back end to improve overall performance with the site. While I'm all for performance improvements, this idea that I now have to load my apps twice every single time I want to access them seems like a pretty big step backwards from a user interaction standpoint. It was also pointed out to me, and I have heard various discussions about this over the past year or two, that I need to "optimize" my apps. However it doesn't seem like Quickbase has a clear standard in terms of what "optimized" consists of, in the sense of, "if your app meets these standards, it will not timeout upon load." I find it a bit frustrating to say, "Hey, my app isn't behaving as expected," and be provided some vague advice that is more riddle than answer. And while I fully understand that everyone's apps are different and optimization can mean a lot of things, I would hope that there is some guidance to troubleshoot their own design decisions. The one piece of concrete advice that I received was to create a pipeline that performs a simple API request that runs every 20 minutes, which I guess prevents your app from "going to sleep." But I fail to see how that could be considered anything other than a clumsy band-aid to a step backward in user experience. Anyway, this is a bit of a rant, but I'm wondering how many other people have encountered this and what you're doing to remedy it. I have apps where this is occurring, and when I run the performance management tools, it just says that my tables have too many default fields, or that some tables don't contain any relationships, which can't possibly be driving app load issues, right? None of the performance insights are related to actual performance. Re: Transitioning to UTF-8 Just thinking out loud, but if I were to approach this, I would probably use the API to loop through all my apps, and within each app, loop through all my tables, and just convert the string fields of each table to utf-8 on the fly before inserting back into the table. If you have someone on your team that's familiar with python or could hire someone for cheap, they could probably whip something up in an hour or two. Depends on how many tables you have and many records are in each, but the runtime for this could potentially be pretty quick. Re: Creating a formula date/time field through the REST API Although the API returns a response that shows the field type as "timestamp", that's actually not a specifiable field type when creating a field. Yes, this is confusing. You must specify the field type "datetime" in order for the request to work. Guess you'll probably have to create a condition to convert timestamp to datetime. Re: Automatically save a form page as PDF and insert into attachment field?Very cool! Thanks for working on this, Sean. I'm going to try this out as soon as I get the chance.Automatically save a form page as PDF and insert into attachment field?I've long wondered if there's a solution that's shareable where I could click a button and have a form page automatically saved in PDF format and inserted into an attachment field. I realize that there are QSPs that provide this service, but I'm more interested in knowing/understanding how to do this myself. My impression is that you would need to use JS to write the form to PDF and then encode to base64, and then you could use the base64 result to insert into API_UploadFile. My JS knowledge is minimal but I can cobble stuff together through StackExchange plus trial and error. I'm not worried about the API end of things - that seems pretty straight-forward. Has anyone tried this themselves that they'd be willing to share? I've looked on the forum before but it seems the answers always fall into, "Hire a QSP," or "Use IOL or some other technique that is now deprecated." Presumably I'd need to call the JS from a code page? Or would I need a local API call on my end to launch something? If it's possible to do everything in QB without having to host something myself, that's obviously the preferable and most portable method, but if that's 100% not possible, I have access to AWS. Big picture goal is the user clicks a button, button calls a script that runs through about 20-30 records in a table, uses a specific QB form page to generate a PDF for each record, PDF is uploaded into corresponding record attachment field. No templates or anything. Short of that, clicking the button once per record would also be acceptable, but it would be rad to grab the whole table in one go.Re: Virtual Empower: App LibraryI love this app and the concept and execution is great. Thanks for creating it! Would it be possible to also incorporate the Get Reports for Table API in addition to the existing ones? I'd love to be able to track all the existing reports in my apps. I'd also love to track notifications but I don't think there's an API for that.Save & Keep Working Button while using ifv=Has anyone figured out a way to implement a Save & Keep Working option while working within the ifv= option that removes the QB interface? The native buttons are gone and if you try to use the onclick#saveandkeepworkingmenuoption deal, it doesn't work with the QB interface removed. I can save records. I can save and redirect somewhere else (a predetermined URL). I cannot save and redirect to the same record while staying in edit mode and continuing to use ifv=. If I use DoSave() or DoSaveAdd(), it saves the record but then returns the user to display record mode without the ifv= appended. One thing I noticed when I do this, it appends "r=" and then two random characters to the resulting URL, which is some kind of breadcrumb thing that QB uses but I don't know how to replicate that. I think if I could replicate that somehow, that might solve my problem. I should add that I am particularly challenged here because I would like this Save & Keeping Working option to work while the user is creating a new record, so no Record ID exists yet at this state. Otherwise I could punch in the redirect to simply go to the existing record. Essentially the process is that the user creates a new record, fills in data, then I want them to be able to Save & Keeping Working, so that they can add a child record. But they can't add a child until the parent is saved first.Re: Trying to implement API_RunImport in pythonWell, I knew it was something dumb, and apparently I had not added this particular app to my user token in my personal preferences. When I tested it via the URL, it worked fine, so I had assumed I had already completed that step. I guess the URL method functions differently? In any case, I guess this is solved!Trying to implement API_RunImport in pythonI've created a couple scripts, with help from a friend who's time is rather limited, to run some API calls, and they are working successfully. He wrote the first one in python, which was his choosing, and my python skills are limited. However the scripts are simple enough I thought I could modify them slightly and use them for other API calls, which has mostly been working. API_RunImport is not working. It looks (to me) like it should work, it does not error in the command line when I run it, which I think means the syntax is correct. But the API call does not fire and the import doesn't run. When I check QB, nothing has happened. I tested out the info I'm using as a URL and the URL method works fine, so my user token, app token, dbid and import ID are all accurate. So there's something in the - XML maybe? Again, it looks correct to me so I'm at a bit of a loss. I'm guessing it's one of those minor things I'm not seeing because I've been staring at it for too long. The user token and app token are coded into the script itself. Then I enter the specific import ID and dbid when I run the script (so I can run a bunch of imports one after another). I also have my actual domain listed in the post URL but modified it for posting here. import sys import requests import_id = sys.argv[1] dbid = sys.argv[2] user_token = 'my_user_token' app_token = 'app_token' xml = """<qdbapi> <usertoken>""" + user_token + """</usertoken> <apptoken>""" + app_token + """</apptoken> <id>""" + import_id + """</id> </qdbapi>""" headers = {'Content-Type': 'application/xml', 'Content-Length': '', 'QUICKBASE-ACTION': 'API_RunImport'} requests.post('https://mydomain.quickbase.com/db/' + dbid + '?', data=xml, headers=headers) RE: Introducing Pipelines - Webinar Q&AAlthough you've made it clear that Automations are not going away, is there a general sense that Pipelines will eventually replace Automations? When Automations were introduced, it was clear that Actions would not be going away, but certainly Automations seemed to be taking the place of Actions. I quickly transitioned my Actions into Automations, as Automations were more intuitive and powerful for what I was trying to do. I'm curious if the general sense (or hope) is that with the increased capability of Pipelines, and that you can recreate Automations but add additional capabilities, do you foresee most people moving from Automations to Pipelines to implement the trigger/action workflow?