Try the search, it's linked to some great forums

Wednesday, March 2, 2016

Writing to Google Sheets from iOS

Here are some links & info about this subject;
Now which to fiddle with???
Here's the place to start - https://developers.google.com/google-apps/spreadsheets/data check out the bottom Update multiple cells with a batch request

Here's a link to a business app using Google sheets - https://www.smartsheet.com/s/spreadsheet-google-apps?s=1&c=61&m=1307&a=56966441227&k=%2Bgoogle%20%2Bspreadsheet&mtp=b&adp=1o2&net=g&dev=c&devm=&plc=&gclid=Cj0KEQiAvJS3BRDd44fjndyii6MBEiQAN4EkPaUBQ6jIKgNS12DkNKJSfZ7zGlXxNGAUPvm_hHQ-NEQaAjmn8P8HAQ

Here's a site that is similar to what we're doing - https://www.badgermapping.com/https://www.badgermapping.com/

Google Drive API method found at - Updating files
GTLQueryDrive *query = [GTLQueryDrive queryForFilesUpdateWithObject:file
                                                             fileId:file.identifier
                                                   uploadParameters:uploadParameters];
 
Google Sheets API - https://developers.google.com/google-apps/spreadsheets/ 
https://developers.google.com/apps-script/guides/sheets#get_started 
 
The Apps Script Execution API is a REST interface that lets a third-party
application call a function defined in an Apps Script project and receive a response. - 
https://developers.google.com/apps-script/guides/rest/https://developers.google.com/apps-script/guides/rest/
 
Google Apps Script - First script - https://developers.google.com/apps-script/overview  
This is the iOS quickstart example - DO IT!! - 
https://developers.google.com/apps-script/guides/rest/quickstart/ios#prerequisites
Step 1: Create the script (name - Apps Script Execution API Quickstart Target)
Step 2: Publish the script for execution (API ID - Mir2lNxwUvDuYxMtwHhqWu00vNRSAENjV
Step 3: Choose a quickstart (iOS Quickstart)
iOS Quickstart
Step 1: Turn on the Google Apps Script Execution (Script Execution API)
bundle ID -  756894447473-0ho4dumd7rgi646hstkvc8p3octk0pqo.apps.googleusercontent.com
Step 2: Download the Google Client Library - In terminal run - 
git clone --recursive https://github.com/google/google-api-objectivec-client.git
Step 3: Prepare the workspace Quickstart.xcworkspace
Step 4: Prepare the project - xxx Can't find the framework to load?? xxx
Step 5: Set up the sample - ?????????
Step 6: Run the project - ?????????
 
YEAH!!! Got it working check out latest GitHub merge  CPL 3/27 
Now need to work on Apps Scripts for modifying a google sheet. Make a script that 
will modify a Sheet from a CSV file of the form Index, ColumnName, Value.  The app 
will create and download this file to your Google Drive.
 
For Sheets App Scripts ref: https://developers.google.com/apps-script/guides/sheets
1) For a quick introduction to using Apps Script with Google Sheets, see the
5-minute quickstart guide for
Macros, Menus, and Custom Functions.
2) Apparently there is a marketPlace for published app; 
https://apps.google.com/marketplace/search/Sheets 
3) Example of what we're doing;
https://apps.google.com/marketplace/app/dbeaalmfgeechbnnibjlbpiobkbinngh
4)AppSheet is doing interesting stuff;
https://www.appsheet.com/ 
 
** READ this WIKI it's IMPORTANT ** The Google APIs Client Library for Objective-C is 
a Cocoa framework that enables developers for Mac OS X and iOS to easily write native 
applications using Google's JSON-RPC APIs. 
https://github.com/google/google-api-objectivec-client/wiki  
 
 
 
 
 
 

Thursday, February 11, 2016

Magazine Delivery & Storage

Paying for storage is way more useful than one might think to start with.  Outsourcing your periodical storage actually pays for at least 3 important services.  They include;

Receiving
Distribution
Storage
  1. Receiving is the ability to receive pallet-ed materials delivered by large trucks.  It also allows for easy unloading and storage within a covered & secure storage space.
  2. Distribution allows for multiple drivers and other permitted people access to the periodicals over a wide period of time.
  3. Storage provides safe and secure place to store your materials over the near and long term.  It also provides storage space for ancillary materials like racks & archival materials.
By sharing a self storage locker Customers save the expense of providing their own storage as well as management of that space.

We offer monthly storage costs that are considerable cheaper than providing you own rented space. We manage the space and keep it simple for you.

Monthly Costs; (based on annual rental)
1 Pallet = $50/mnth
2-3 Pallets = $100/mnth
4-8 Pallets = $140/mnth
Month-to-month = $75/pallet

Monday, February 1, 2016

RouteTracker - Distribution - Sales - Community

RouteTracker 
is a fully integrated Distribution Information System (DIS) that helps to streamline your distribution tasks.  It provides up to the minute, paperless distribution lists for delivery drivers, sales and other Staff.  Drivers can share feedback to the system through sharing on the Google sheet distribution list.

It is comprised of 3 elements;
  1. Shareable, secure distribution list that is hosted on the Cloud using Google Sheets
  2. Integrated and dynamic mapping for visualizing & understanding your distribution
  3. Dynamic Mobile mapping app (iOS and Android) that allows for efficient, accurate and paperless delivery
The system is extremely flexible including;
  • The distribution list is a standard spreadsheet format using Google's free & open source application, Sheets.

  • The list is secure and can only be accessed by people who are Shared the document
  • Shared Users can have different access privileges (edit, view only etc)
  • The list is a simple spreadsheet that can be filtered, sorted and otherwise manipulated however the User sees fit
  • Each item on the list is geocoded with it's exact latitude & longitude location so that it can be located on the maps and app 

  • Dynamic maps are beautiful representations of the data on the list that can be used for many purposes including;
    • Drivers distribution maps including display of multiple different magazines for each route  
    • Sales presentation maps for Advertising
    • City zipcode distribution for purposes of defining demographics
    • Advertiser maps
    • Specialty purpose maps for websites & blogs - Local Dining Guide
  • Maps are dynamically linked to the list such that changes made to the list automatically update the map
  • Maps are simple HTML web page format and can be integrated into websites in many simple ways

  • The app is a full featured iOS Android app with all the simple great features and gestures that people love in apps
  •  

    • The app can upload the distribution list at any time, and also works without connection to the web
    • Each item can be displayed in a group or singly on a map including the User's location
    • Directions to the stop can be accessed
    • Each location is also displayed in a table view that can be sorted, filtered and searched
    • Each location has it's own detail page with all of the data contained on the sheet
    • A simple web based version of the app is available for Android devices



     We provide these 3 things integrated into a single product we call RouteTracker and provide this to our Customers as a subscription service.  The service is a standard Software as a Service (SaaS) product.  Pricing is based on the size of your distribution network.


    Tuesday, January 19, 2016

    Unity notes

    Unity is the premier 2D/3D gaming platform out there.  I've just started going through a series of tutorials from Stone River Learning.  They're very nice.

    Here's code for a 'constructor'.  A constructor is when a class or struct is created, its constructor is called. Constructors have the same name as the class or struct, and they usually initialize the data members of the new object. 
    and here's a code snippet;
        public struct Question
        {
            public string questionText;
            public string[] answers;
            public int correctAnswer;

    // This is the constructor that initializes the Question struct/object
            public Question(string questionText, string[] answers, int correctAnswer)
            {
                this.questionText = questionText;
                this.answers = answers;
                this.correctAnswer = correctAnswer;
            }

        }
            
        public Question testQuestion = new Question ("What is your favorite color?", new string[]{"blue","green","yellow"}, 0);


    Enumeration snippet;
                foreach (GameObject p in TriviaPanels) {
                    p.SetActive (false);


    Here's another note;
     
     

    Configuring a webView, MKMapView, UIAlertView

    Another quickstart guide to various views;

    webView
    Here the code for viewDidLoad;
        // Do any additional setup after loading the view, typically from a nib.
        NSString *fullURL = @"http://cutthroatrobotics.com/";
        NSURL *url = [NSURL URLWithString:fullURL];
        NSURLRequest *requestObj    = [NSURLRequest requestWithURL:url];
        [self.viewWeb loadRequest:requestObj];


    UIAlertView
     Here's a snippet ;