CINXE.COM

404 - AppSheet

<!doctype html> <html lang="en" class="newLayout "> <!-- The AppSheet website and AppSheet apps make use of open source software subject to the licenses and copyright notices at https://www.appsheet.com/oss/notices --> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="apple-itunes-app" content="app-id=732548900"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <script nonce="MNFMt1btzyhhABUz5wDIHA==" type="text/javascript"> if (self.trustedTypes && self.trustedTypes.createPolicy && !self.trustedTypes.defaultPolicy) { const escapeScriptPolicy = trustedTypes.createPolicy("default", { createHTML: (string) => { if (string === "&#8203;" || string === "" || string === "&") { return string; } else { return null; }; } }); } </script> <title>404 - AppSheet</title> <meta name="description" content="Learn how to make mobile apps for iPhone, Android, and web."> <meta name="author" content="AppSheet"/> <meta name="google-site-verification" content="97jAB4aUdRiLxKkCyBUhJnpDEWTQAJ6tOzUKFwE1p8w"/> <meta name="google-site-verification" content="qPkt9TxKqz8fFiALwco4ddvCCsGNrgRwTuE1aCBxG1k"/> <meta property="og:title" content="AppSheet : mobile apps from spreadsheets : 404"/> <meta property="og:image" content=""/> <meta property="og:site_name" content="AppSheet"/> <link rel="shortcut icon" href="/Content/img/Favicon-Material-Rebrand.png" sizes="16x16"/> <link rel="shortcut icon" href="/Content/img/Favicon-Material-Rebrand.png" sizes="32X32"/> <!-- Reskinned stylesheet --> <link href="https://www.appsheet.com/assets/35d55fc0eedffd6aea08586d705d64dc5935fcb4ef5b7c3a70d71d74c5f09e5d.css" rel="stylesheet" type="text/css" media="screen, print" /> <!-- Google Fonts --> <link href="https://fonts.googleapis.com/css?family=Open+Sans:400,400i,700,700i" rel="stylesheet"> <!-- Navbar --> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="/Content/scripts/web/navbar.js"></script> <!------------------------ TRACKING ------------------------> <script nonce="MNFMt1btzyhhABUz5wDIHA==" type="text/javascript"> /** * This is used by this page and MarketingRedirect.cshtml - moved above ShouldLogAnalytics * since this returns false for test accounts and we have an integration test */ function getQueryStrings() { var assoc = {}; var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); }; var queryString = location.search.substring(1); var keyValues = queryString.split('&'); for (var i in keyValues) { var key = keyValues[i].split('='); if (key.length > 1) { assoc[decode(key[0])] = decode(key[1]); } } return assoc; } </script> <!-- Google tag (gtag.js) --> <script nonce="MNFMt1btzyhhABUz5wDIHA=="> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); function glueCookieNotificationBarLoaded() { (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); var firstScript=d.getElementsByTagName(s)[0], dl=l!='dataLayer'?'&l='+l:''; var script = d.createElement(s); script.async = true; var url = 'https://www.googletagmanager.com/gtm.js?id='+i+dl; if (self.trustedTypes && self.trustedTypes.createPolicy) { var policy = self.trustedTypes.createPolicy('gtm-load-fix', { createScriptURL: function(_ignored) { return url; } }); script.src = policy.createScriptURL('_ignored'); } else { script.src = url; } firstScript.parentNode.insertBefore(script, firstScript); })(window,document,'script','dataLayer','GTM-MXWLX3PF'); } </script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="https://www.appsheet.com/assets/090510102d9f686cce5db049efd92db035e66231ef0381147401ce867b7c9e02.js" ></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="https://www.appsheet.com/assets/2e12937f9cad1713615022f1dac0f3ece070d2bd2c1b4869adb27283343662b3.js" ></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="https://www.appsheet.com/assets/3599ce53934853daad86acf51f3d077ae4175583366a41f05bab34e720a31163.js" ></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="https://www.appsheet.com/assets/de6cdd38c56716d906231036300becd46a35b7fc5f40d55429be80c91a935798.js" ></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="https://www.appsheet.com/assets/6f7fa028e348569b4380e330a8a63cf07687cc3ae0c7343ff09430158c589f08.js" ></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="https://www.appsheet.com/assets/caf839b139efcfe921023997f61904bb2dd5453125d71aebb7cb5df7ae70cedd.js" ></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" type="text/javascript"> /** * Checks whether all of the UTM fields are empty in local storage. */ function hasNoSetUtmFields() { return ( window.localStorage.getItem('JeeneeNewUserCampaign') == null && window.localStorage.getItem('JeeneeNewUserSource') == null && window.localStorage.getItem('JeeneeNewUserMedium') == null && window.localStorage.getItem('JeeneeNewUserContent') == null && window.localStorage.getItem('JeeneeNewUserTerm') == null ); } /** * Checks for UTM fields in URL params. */ function hasUtmFieldsUrlparams(queryParams) { return ( queryParams.hasOwnProperty('utm_campaign') || queryParams.hasOwnProperty('utm_source') || queryParams.hasOwnProperty('utm_medium') || queryParams.hasOwnProperty('utm_content') || queryParams.hasOwnProperty('utm_term') ); } /** * Sets UTM fields to direct/default values in local storage * when none are passed in via the URL upon user's first visit. * utm_content and utm_term are left undefined for direct and organic traffic. */ function setDefaultUtmPropertiesOnUserLocalStorage() { window.localStorage.setItem('JeeneeNewUserCampaign', 'direct'); window.localStorage.setItem('JeeneeNewUserSource', 'direct'); window.localStorage.setItem('JeeneeNewUserMedium', 'none'); } /** * Sets UTM values in local storage. Only process UTM parameters within the URL when * all of UTM fields in local storage are undefined. This ensures first touch attribution. * utm_campaign, utm_source, and utm_medium are required fields for every campaign, CTA, etc. * Seeing any of these fields as undefined is an indication that there are invalid UTM parameters in the URL. * utm_content and utm_term are optional. */ function setUTMPropertiesOnUserLocalStorage() { if (hasNoSetUtmFields()) { var queryParams = getQueryStrings(); if (hasUtmFieldsUrlparams(queryParams)) { if (queryParams['utm_campaign'] != null) { window.localStorage.setItem('JeeneeNewUserCampaign', queryParams['utm_campaign']); } if (queryParams['utm_source'] != null) { window.localStorage.setItem('JeeneeNewUserSource', queryParams['utm_source']); } if (queryParams['utm_medium'] != null) { window.localStorage.setItem('JeeneeNewUserMedium', queryParams['utm_medium']); } if (queryParams['utm_content'] != null) { window.localStorage.setItem('JeeneeNewUserContent', queryParams['utm_content']); } if (queryParams['utm_term'] != null) { window.localStorage.setItem('JeeneeNewUserTerm', queryParams['utm_term']); } } else { setDefaultUtmPropertiesOnUserLocalStorage(); } } } function TrackSimpleConcordEvent(eventName) { if (window.Concord && typeof window.Concord.TrackSimpleEvent === 'function') { window.Concord.TrackSimpleEvent(eventName); } } setUTMPropertiesOnUserLocalStorage(); /* All DefunctEventCalled events are deprecated, do not use */ window.Track = function (event, properties, callback) { TrackSimpleConcordEvent('Defunct Event Called'); } window.TrackSuperProp = function (properties) { TrackSimpleConcordEvent('Defunct Event Called'); } window.TrackSuperPropOnce = function (properties) { TrackSimpleConcordEvent('Defunct Event Called'); } window.TrackPeopleProp = function (properties) { TrackSimpleConcordEvent('Defunct Event Called'); } window.TrackTabClick = function (pageName, tabName, properties) { TrackSimpleConcordEvent('Defunct Event Called'); } window.TrackActionClick = function (pageName, buttonName, properties) { // Need to create an event in EventName for each combo here otherwise it's not very useful // to just know that a user clicked on a button but not what it was TrackSimpleConcordEvent('Button Click ' + pageName + ' ' + buttonName); } // Use this function to track user link clicks. You need a special function for this, since // the browser reloads a new page when the user clicks a link. window.TrackLinks = function (query, eventName, properties) { TrackSimpleConcordEvent('Defunct Event Called'); } </script> <!------------------------ END TRACKING ------------------------> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" href="https://fonts.googleapis.com/css2?family=Google+Sans+Text:wght@400&family=Google+Sans:wght@500&display=swap" as="style"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans+Text:wght@400&family=Google+Sans:wght@500&display=swap"> <link rel="stylesheet" href="/Content/css/cookienotificationbar.min.css"> </head> <body id="status404" class="gsuite-root"> <div class="bodyWrapper"> <!-- Hidden logo to show up on links to page --> <img src="/Content/img/Favicon-Material-Rebrand.png" alt="" class="hidden" style="display: none;"/> <script nonce="MNFMt1btzyhhABUz5wDIHA=="> window.VerifiedAjaxPostToken = 'dummy:dummy'; var verifiedAjaxPost = function (options, errorOptions) { if (!options.headers) { options.headers = {} } options.method = 'POST' errorOptions = errorOptions || {}; return $.ajax(options).fail((jqXHR, textStatus, errorThrown) => { if ( !errorOptions.disableErrorReporting && window.ErrorHandling && typeof window.ErrorHandling.ReportHttpError === 'function' ) { window.ErrorHandling.ReportHttpError('post', options.url, jqXHR.status, { error: errorOptions.error, errorThrown, textStatus, responseText: jqXHR.responseText, }); } }); } window.verifiedAjaxPost = verifiedAjaxPost var reloadPage = function (nonce) { // if there is already a nonce=, remove it var currentSearch = window.location.search var currentSearchSplit = currentSearch.split("&nonce=") if (currentSearchSplit.length > 1) { currentSearchSplit[1] = "" currentSearch = currentSearchSplit.join("") } window.location.search = currentSearch + "&nonce=" + (nonce ? nonce : Math.random()) } // GLOBALS window.DEBUG_MODE = false window.ALLOW_DEBUG_LOGGING = false window.getUserId = function () { return '-1' } window.getUserRole = function() { return 'Member'; } window.getUserCorporatePlan = function() { return 0; } window.getIsCoreAdmin = function () { return false; } window.hasRolloutByUserId = (function () { const rollouts = new Set( ["AdminConsoleAppTransfer","AdminConsoleCoreAdmin","AntlrExpressionAssert","AppSheetAdminConsole","AutoResolution","BannerForDeadlineReminderOfFirebaseBrandedAppsMigration","CurryInitialValueFix","DefaultDesktopUI","DontConstructRemoteImageUrls","EnableQuickSyncForASDBApps","EnableRtlForReactRoot","EnableUserFeedback","FirebaseHttpV1MigrationBrandedApps","FixDeletePersistence","FixLabelAttributeCache","FixTouchDoubleClick","FlickerFix","GeminiRebrand","GoogleFormsEvent","ImagesUsePartialDimensions","ImproveEditorOnboarding","InContextActionsAndColumns","InContextSlices","InitializeAppInDesktop","MapViewStackToControlMemo","NewFakeIntercom","NoClearBeforeWrite","OverrideBackNavigation","ParseAppUrlHash","PreserveInitialValuesInTransaction","ReactRootValidationErrors","RefactorOverlayActions","RequestCompression","RevampOnboardingStyles","SerializeFilterExprInSetCurrentUiState","SetSourceQualifierIdFrontend","ShowLiveLastProcessedDate","ShowProminentTableScopeActions","ShowTooltipsForActionsInCardView","SmallActionsImprovements","StaleForm","StaticTaskTableName","UpdateEmulatorExpression","UpdateValidityEnums","UseAppDefRoute","UseLogoutEndpointInApp","UseNewBootStrapBundle","UseNewLocalizedWireValueFallback","UseParentFilters","UseRecursiveFormattingRule","UseTypeDisplayInDesktopUIDrilldownTree","WidgetHelperJSS"] ); return function (rolloutName) { return rollouts.has(rolloutName); } })(); </script> <!-- Messages when creating or cloning apps --> <div id="cloningClickEater"> <div id="waitingClone"> <div class="loader">Loading...</div> <p>We're setting up your new app...</p> </div> <div id="errorClick"> <div id="errorModal" class="modal fade modal-errors-new"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close AlwaysEditable" data-dismiss="modal"> <i class="material">close</i> </button> <h5 class="modal-title-new">Error Creating App</h5> </div> <div id="modalErrorText" class="modal-body-new"></div> <div class="modal-more-errors-holder"> <div> <div id="moreErrorsAvailableText"></div> <button type="button" id="seeMoreArrow"> <i class='fa fa-chevron-down'></i> </button> <button type="button" id="seeLessArrow"> <i class='fa fa-chevron-up'></i> </button> </div> <div id="moreErrorsText" class="modal-more-errors"></div> </div> <div class="modal-footer"> <button id="ackErrorButton" class="btn btn-default AlwaysEditable" data-dismiss="modal">OK</button> <button id="templatesButton" class="btn btn-default AlwaysEditable" data-dismiss="modal">Start with a template</button> </div> </div> </div> </div> </div> </div> <header class="topNav"> <div class="primaryNav"> <div class="logo"> <a href="/"> <img class="material-rebrand-logo" src=https://www.appsheet.com/Content/img/material/appsheet_rebrand_logo.svg /> <span class="logo-text"> AppSheet </span> <span class="subscriptionType"></span> </a> </div> <nav> <div class="navicon"> <i class="material clickable">arrow_drop_down</i> </div> <ul class="non-mobile"> <li class="createanapp "> <a href="https://about.appsheet.com/how-to-create-an-app" data-label="createanapp" rel="" target=""> <span> How to create an app </span> </a> </li> <li class="pricing "> <a href="https://about.appsheet.com/pricing" data-label="pricing" rel="" target=""> <span> Pricing </span> </a> </li> <li class="apps "> <a href="https://www.appsheet.com/templates" data-label="apps" rel="" target=""> <span> Templates </span> </a> </li> <li class="blog "> <a href="https://cloud.google.com/blog/products/no-code-development" data-label="blog" rel="" target=""> <span> Blog </span> </a> </li> <li class="login "> <a href="https://www.appsheet.com/account/login" data-label="login" rel="" target=""> <span> Sign in </span> </a> </li> <li class="signup "> <a href="https://www.appsheet.com/account/login" data-label="signup" rel="" target=""> <span> Get started </span> </a> </li> </ul> <ul class="mobile"> <li class="createanapp "> <a href="https://about.appsheet.com/how-to-create-an-app" data-label="createanapp" rel="" target=""> <span> How to create an app </span> </a> </li> <li class="pricing "> <a href="https://about.appsheet.com/pricing" data-label="pricing" rel="" target=""> <span> Pricing </span> </a> </li> <li class="apps "> <a href="https://www.appsheet.com/templates" data-label="apps" rel="" target=""> <span> Templates </span> </a> </li> <li class="blog "> <a href="https://cloud.google.com/blog/products/no-code-development" data-label="blog" rel="" target=""> <span> Blog </span> </a> </li> <li class="login "> <a href="https://www.appsheet.com/account/login" data-label="login" rel="" target=""> <span> Sign in </span> </a> </li> <li class="signup "> <a href="https://www.appsheet.com/account/login" data-label="signup" rel="" target=""> <span> Get started </span> </a> </li> </ul> </nav> </div> </header> <main> <script nonce="MNFMt1btzyhhABUz5wDIHA==" type="text/javascript"> if (self.ReportingObserver) { const observer = new ReportingObserver((reports) => { reports.forEach((report) => { if (report.body.blockedURL === 'trusted-types-sink') { const ttMsg = "TT Error: " + report.body.sample; const data = { url: report.body.documentURL, msg: ttMsg, errorContext: report.body.sourceFile, line: report.body.lineNumber, }; const headers = { 'Content-Type': 'application/json', }; const blob = new Blob([JSON.stringify(data)], headers); navigator.sendBeacon('/manage/JavaScriptError', blob); } }); }, { types: ["csp-violation"], }); // Start observing errors observer.observe(); } </script> <section id="error" class="section"> <div class="flex-center"> <img src="/Content/img/content/planets.svg" /> <div class="title">404: Page not found</div> <div class="body2 description"> The page you're looking for isn't here. Try checking the URL again or head back to the <a class="link" href="/">homepage</a>. </div> </div> </section> <div class="modal" id="deleteAccountModal"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button class="AlwaysEditable cancel" data-dismiss="modal">X</button> <h5 class="modal-title"> Delete my account </h5> </div> <form method="post" action="/account/delete"> <input type="hidden" name="id" value="-1"> <div class="modal-body"> <p>We're sorry to see you go! Why are you leaving?</p> <p> <fieldset> <div> <input name="deleteAccountReason" type="radio" value="too hard" id="too-hard" style="width:auto;margin-right:10px"/><label for="too-hard" style="display:inline">It's too hard to figure out</label> </div> <div> <input name="deleteAccountReason" type="radio" value="unmet needs" id="unmet-needs" style="width:auto;margin-right:10px"/><label for="unmet-needs" style="display:inline">It doesn't do what I need it to do</label> </div> <div> <input name="deleteAccountReason" type="radio" value="just browsing" id="just-browsing" style="width:auto;margin-right:10px"/><label for="just-browsing" style="display:inline">I was just browsing</label> </div> <div> <input name="deleteAccountReason" type="radio" value="other" id="other" style="width:auto;margin-right:10px"/><label for="other" style="display:inline">Other</label> </div> </fieldset> </p> <p> <label for="delete-account-comment">Please tell us what we should improve<textarea rows="4" name="deleteAccountComment" id="delete-account-comment"></textarea></label> </p> <p> <a href="https://support.google.com/appsheet?p=reset-appsheet" class="link clear-devices-help-link"> Deletion of this account will not delete the apps or app data already downloaded to app users' devices. </a> </p> </div> <div class="modal-footer" style="overflow:auto"> <button type="submit">Delete my account</button> </div> </form> </div> </div> </div> </main> <footer class="bottomNavCompact"> <nav> <ul> <li> <div class="logo"> <a href="https://www.google.com" title="Google" target="_blank" rel="noopener noreferrer"> Google </a> </div> </li> <li> <div> <a href="https://about.google/intl/en/?utm_source=about.appsheet.com&utm_medium=referral&utm_campaign=appsheet-footer-en " title="About Google" target="_blank" rel="noopener noreferrer"> About Google </a> </div> </li> <li> <div> <a href="https://about.google/products/" title="Google products" target="_blank" rel="noopener noreferrer"> Google products </a> </div> </li> <li> <div> <a href="https://policies.google.com/privacy" title="Privacy" target="_blank" rel="noopener noreferrer"> Privacy </a> </div> </li> <li> <div> <a href="/Home/Terms" title="Terms" target="_blank" rel="noopener noreferrer"> Terms </a> </div> </li> <li> <div> <a aria-hidden="true" class="glue-footer__link glue-cookie-notification-bar-control" role="button" tabindex="0"> Cookies management controls </a> </div> </li> </ul> </nav> </footer> <!-- SCRIPTS --> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="/Scripts/jquery-3.6.2.min.js"></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="/Scripts/bundles/valjquery.js"></script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="/Scripts/jquery.unobtrusive-ajax.min.js"></script> <!-- Various utilities (modals, tooltips, etc.) --> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="/Content/scripts/web/utilities.js?update=&#x27;20241122&#x27;.1"></script> <!-- This partial checks the account status every hour using accountStartup.js --> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="/Content/scripts/web/accountStartup.js"> </script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" type="text/javascript"> $(function () { var shouldCheck = false; if (shouldCheck) { var oneHour = 60 * 60 * 1000; initCheckAccountStatus(oneHour); } }); </script> <!-- MORE TRACKING --> <!-- Google tag (gtag.js) --> <script nonce="MNFMt1btzyhhABUz5wDIHA=="> window.dataLayer = window.dataLayer || []; function gtag() { dataLayer.push(arguments); } gtag('js', new Date()); function glueCookieNotificationBarLoaded() { (function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'}); var firstScript=d.getElementsByTagName(s)[0], dl=l!='dataLayer'?'&l='+l:''; var script = d.createElement(s); script.async = true; var url = 'https://www.googletagmanager.com/gtm.js?id='+i+dl; if (self.trustedTypes && self.trustedTypes.createPolicy) { var policy = self.trustedTypes.createPolicy('gtm-load-fix', { createScriptURL: function(_ignored) { return url; } }); script.src = policy.createScriptURL('_ignored'); } else { script.src = url; } firstScript.parentNode.insertBefore(script, firstScript); })(window,document,'script','dataLayer','GTM-MXWLX3PF'); } </script> <script nonce="MNFMt1btzyhhABUz5wDIHA==" src="/Content/scripts/_shared/external/cookienotificationbar.min.js" data-glue-cookie-notification-bar-autoload=false> </script> <script nonce="MNFMt1btzyhhABUz5wDIHA=="> document.addEventListener("DOMContentLoaded", function() { new window.glue.CookieNotificationBar(document.getElementById('cookieConsentContainer'), { category: window.glue.CookieNotificationBar.category.TWO_A, siteId: "www.appsheet.com", language: 'en', }); }); </script> </div> <div id="cookieConsentContainer"></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10