Go to AppSheet, log in and go to "My Apps". Then click on
and follow the AppSheet steps.
You can use the following development guide or open the Solvay App Catalog to find new ideas.
This tool has different elements which you have to use when you want to make an app.
The first step for your data to become an Appsheet app is to be added as a table to the template of the app. These tables are simply “models” of the rows and columns of the Spreadsheet sheets. For this reason, when you make your sheet you have to think that column headers are very important because these define the structure of the table. Another interesting point to take in care in this process are changes in rows, while columns are always the same, rows can change as needed by adding, deleting or updating new data. Appsheet allows you to add as many tables as you need.

The rows have different categories, these can be primary keys, required, used only for read, labels, hidden. All tables must have a primary key because it is the column which identificate each row. The definition of the key is not unique, in the example below I the column KEY, EMAIL can be a good key. It is only important that its value its always different from a row to another.

If you want to protect some data of your tables, the best form is using Security Filters. A security filter is an expression that is evaluated on each row in a table and returns true or false. If it is true, the row is included in the app and if it is false, the row is discarded.

AppSheet has a lot of column types which help you to differentiate the type of information you are using on each column. These types can be organized in the following groups:
Numeric types (Number, Decimal, Price, Percent)
Temporal types (Date, Time, DateTime, Duration)
Change types (Change Timestamp, ChangeCounter, ChangeLocation): are using in apps in which is important to record a timestamp or increment a counter automatically in a row when changes are made to other columns, and even _values_ within the columns.
Enumerated types (Yes/No, Enum, EnumList, Ref, Color, Progress)
You can use the type Ref to do references between tables. It can improve a lot the structure of your app
Communication types (Phone, Email)
Geographic types (Address, LatLong)
Content types (Show, Image, Drawing, Thumbnail, Signature, File)
Other types (URL, App, MultiColumnKey)

Slice is like a sub set of rows from a table, and can be used in the same place as a table but they haven’t security filters. The slice below gather together all employees who belong to the Industrial Function

The next step, it is to build views for your tables. Views are the tabs that you will see in your app. There are several types, some of them like Deck and Table summarize the data as a scrollable list of rows, however Gallery lets you show the content like a summary with images, others like Chart or Map are more specific. One of the most interesting is Form because it allows you to make registers directly. Also, you can choose the names of your views, their icons, when they are showing...

Format Rules transform the way information is displayed throughout your apps. You can do many changes in the format of your text: color, type, size... Moreover, format rules allow you to add icons next to the rows.
The same app can have different format rules.

Actions are mini-tasks that can modify data in your app. They have different uses: set or update the value of a field on the row, open a different AppSheet app or go to another view in the current app, copies the current row and opens it in a form view.

Workflows allow you to automatically invoke actions when an events occur. They support the following actions: customize and send email, customize and sent SMS messages and invoke cloud services.

Expressions may be used in various AppSheet features to customize app behavior and provide your users with advanced functionality. When you want to make an expression you have to write values with the following forms: constants using "double quotes" except for numeric values and column names using [square brackets]. These are the built-in functions of Appsheet:
NOW(): for the current DateTime
TODAY(): for the current Date
TIMENOW(): for the current Time
HERE(): for LatLong of the current Location
USERNAME(): for the Name of the current user
USEREMAIL(): for the Email of the current user
UNIQUEID(): to create unique Text values for keys
ISBLANK(<expression>): to check if an expression is empty
CONCATENATE(<text-expression1>, <text-expression2>, ...): to combine two or more text values
LEN(<text-expression>): to get the length of a text value
IF(<condition>,<then-expression>,<else-expression>)
IFS(<condition1>,<then-expression1>, <condition2>, <then-expression2>, ...): to provide a sequence of condition-value pairs that are evaluated left-to-right until one of the conditions is true.
SWITCH(<expression>, <value1>, <result1>, <value2>, <result2>, ..., <default_result>): to choose one of the results based on the value of the expression. It is a simpler version of IFS.
ORDERBY(<List of Ref expression>, <column1>, <direction1>, <column2>, <direction2>, ...): to sort a list of references. The first argument must yield a list of references, i.e. a list of the keys of the records to sort. This is followed by one or more pairs indicating a column name to order by, and its ordering direction. The value TRUE indicates "Descending" order. The value FALSE indicates ascending order. If the data should be ordered by just one column (which is the common case), the ordering direction may be omitted and defaults to FALSE (so the rows are sorted in ascending order). For example, OrderBy([Related Orders [Customer Name]], [Order Date], FALSE)
SECOND(duration): for the Second component of a Specific Time
MINUTE(duration): for the Minute component of a Specific Time
HOUR(duration): for the Hour component of a Specific Time
DAY(date): for the Day of the Month
WEEKDAY(date): for the Day Number from a Date
WEEKNUM(date,[type]): for the Week Number from a Date
MONTH(date): for the Month Number from a Date
YEAR(date): for the Year from a Date
Appsheet has these arithmetic operators to build arithmetic expressions:
Add: +
Subtract: -
Multiply: *
Divide: /
Besides, Appsheet contains other operators:
Equals: =
Not Equals: <>
Greater Than: >
Greater Than or Equals: >=
Less Than: <
Less Than or Equals: <=
AND(expr1, expr2, ...) : returns true if all the sub-expressions are true
OR(expr1, expr2, ...): : returns true if any of the sub-expressions are true
NOT(expr): returns true if the sub-expression is false and vice-versa
ISBLANK({*}) returns true if an expression is empty (ISBLANK)
CONTAINS({text_1},{text_2}): returns true if text_1 contains text_2
IN({*},{List}): returns true if a value is in a list
In the majority of cases, to do a menu is the best starting point.
First of all, you need a table that contains the options you can access through your menu. It structure should be similar to this:

ID
Description: Number of each row
Type: Number
Primary key
Hidden
Required
Initial value: [_RowNumber]-1
Menu
Description: Name of each option
Type: Text
Required
App
Description: Address in the app of each option. You need use this expression “#control=Name of the view”
Type: App
Required
Image
Description: Icon of each option
Type: Image
Label
Required
Role
Description: Role of the users who can show each option. If this field is without text, all users will show this option.
Type: Ref (to the next table)
Hidden
Required
Then it is necessary make another table that relate each role with users (in this case using their email). It will help you to restrict the access to the registers.

Role
Description: Name of different roles
Type: Text
Primary key
Label
Required
Members
Description: E-mail of the different users who have each role.
Type: Email
In Appsheet, the first table must be reference the following table. Moreover, both tables are configured as“Only-read”.
It is necessary only one view, it uses the data of the first table and it type is “gallery”.
The next step is to use a security filter for the first table to select which rows can be displayed to each user. You can use this formula:
When you are going to create a new tab, you must have clear who will have access to it registers.These are the most common cases and their solutions:
All users can add registers, however each user only can show his/her registers which can update
The column “Role” in it row has to be empty
It is possible to update and to add registers in the table
It view show the data of a slice with a filter condition like this: [User]=USEREMAIL() . In this slice is possible to add and to update registers.
Someone can add, update and show all registers
The column “Role” in it row has to be empty
It is possible to update and to add registers in the table
It view show the data of the table
All users can show all registers, but they only can add and update their own registers
The column “Role” in it row has to be empty
It is possible to update and to add registers in the table
This option require two views
First includes him/her own registers
The data source of this view is a slice with a filter condition like this: [User]=USEREMAIL() . In this slice is possible to update and to add registers
The other includes all registers
The data source of this view is a slice in which it is only possible to read registers
Someone can add and update his/her own registers, moreover some users can show all registers
It is possible to update and to add registers in the table
This option require two views
First includes him/her own registers
It is necessary include the role of users who only have access to his/her own registers in the column “Role” of the row of this view
The data source of this view is a slice with a filter condition like this: [User]=USEREMAIL() . In this slice is possible to update registers
The other includes all registers
It is necessary include the role of users who have access to all registers in the column “Role” of the row of this view
The data source of this view is a Slice e in which it is only possible to read registers
What is the function of AppSheet?:
https://www.youtube.com/watch?v=AvE_QEOtijA&index=3&list=PLZ81nepkT97KAehtQ_Y__bNJX3qZaStvt
Webinar about the basic steps for make a new app:
https://www.youtube.com/watch?v=OG-TFY18xmU
Column types:
https://www.youtube.com/watch?v=FPxxhQXbejg
https://www.youtube.com/watch?v=v_TQGe9gnLs
https://www.youtube.com/watch?v=n7BzR33b-e8
https://www.youtube.com/watch?v=j_z_S7Glj9I
Webinar concerning filter data (Slices and Security filters):
https://www.youtube.com/watch?v=tkJhVgvj1ak
Connect different tables with reference type:
https://www.youtube.com/watch?v=iCKkK0zWiow
Make a menu using Valid_If:
https://www.youtube.com/watch?v=WA6Ku8ta2MU
Webinar about several things that you can use in AppSheet:
https://www.youtube.com/watch?v=HinyDIw2E1I
Webinar about the meaning of the different possible expressions:
https://www.youtube.com/watch?v=AkrtzKm9RTQ
Interesting to go deeper in the use of actions
https://www.youtube.com/watch?v=Ome1ZFm7rYo
Add a label : <name of the application>