I have linked an app to a Salesforce sandbox. I want to create a UI to allow user access to a small amount of data in Salesforce. The table I'm linking to has more than 600 columns, but I only need to be able to see and update maybe 5-10 of those. Also many of the columns include references to other tables that I don't want to use at all in this app.
When I create a new table and then link it to Salesforce by going to Table Settings => Storage and selecting the Salesforce object I want to link to, it creates the table with all 600+ columns, and there doesn't appear to be a way to delete any of those columns. Is there any way to create a table with only the 10 columns that I need and then just map each column to the correct object / field in Salesforce?
Salesforce seems to have a slice option that you may want to evaluate.
You could possibly create a slice in the Salesforce application itself and use that slice as an input table to the AppSheet app.
Note: Please evaluate fully at your end, maybe by posting in the relevant Salesforce community. This being AppSheet community, we will not be able to further discuss, help on this Salesforce specific topic.
Hi @SEIU_503 ,
After adding only the necessary columns to the Column Order List, save it once, and then click Regenerate - wouldn't this result in only the columns you need?
@AppliSuitethanks for the tip. This seems like it could work in theory. The problem is that the 'Add' button will only add one column at a time in an order that appears determined by the order the fields were created in the source Salesforce object (eg standard fields first, then custom fields in chron order of creation). And I have 668 fields to get through and only need 10 of them, but some of the ones I need are near the bottom of the list. Also if I remove a field in the AppSheet Data=> Storage UI before the Add button has finished adding all 668 available columns, then the next time I click 'Add' it will re-add the one I previously deleted, if it is higher up in SF's list of fields than the next one that wasn't previously removed in the 'Storage' dialog.
So *maybe* i can get this to work if I have a lot of patience and things don't crash before I load and then remove all 668 fields into the UI one at a time lol.... seems like there's gotta be a better way to do this. Also seems like a somewhat brittle system since if I ever needed to add a newly-created field from the SF object and tried to regenerate the data structure, I worry that I'd have to do this whole tedious field-selection process all over again?
If I were building this from scratch using a Node API, I would just write a SELECT statement that runs when the user opens the app and returns
Is there any way to do something like this in AppSheet and dynamically populate data tables with only the selection of data I need for each user? If I use Salesforce as my underlying data source in the default way the platform seems to be set up, it would require syncing multiple hundreds of fields on hundreds of thousands of records every time the app syncs, and I only need to access and manipulate a tiny fraction of those records/fields.
In case anybody else is facing this issue: there is no way to access Salesforce slices as data sources (as of March 2025), but I ended up using the Google Sheets Data Connector for Salesforce to pull in a SF Report to a Google Sheet, then use that as the data source for the app. There are limitations on data sync with this setup (only syncs a couple times a day), but I'm working on setting up a more frequent sync based on user interaction with the app by calling a script.
User | Count |
---|---|
18 | |
14 | |
11 | |
7 | |
4 |