title: Run app script function from website/localhost
body: <p>I'm really need help to running my function in google app script from my website/localhost.</p>
  
  <p>Already search on google, and the result must use <code>google.script.run</code>. When I'm trying it, I found the error that <code>google</code> is not function.</p>
  
  <p>This ini my <code>.gs</code> code in app script:</p>
  
  <pre><code>/**
  *  This script demonstrates the use of objDB using a spreadsheet as a database
  *
  *  objDB is a Google Script Library that makes it easy to work with data stored in a spreadsheet.
  *  Using the same functions, you can also work with data from a JDBC-connected database.
  *  See http://googlescripts.harryonline.net/objdb for full documentation
  *  
  *  This demo uses the spreadsheet template from the tutorial on the Google Apps Script
  *  https://developers.google.com/apps-script/storing_data_spreadsheets#reading
  *  
  */
  
  /**
  *  To restore the data from the original spreadsheet, run getSpreadsheet()
  *  Try out the sample function, and create your own.
  *  See the results in the log, as well as on the spreadheet itself
  *  You can view the log file using View - Logs, or Alt-Enter
  *  Alternatively, put breakpoints at the Logger.log statements and use Debug instead of Run
  
  /**
  *  Create a copy of the tutorial spreadsheet and stores the ID of the newly created spreadsheet
  *  in Usersettings, so you can continue using this.
  *  Restore data from original tutorial spreadsheet
  */
  
  function getSpreadsheet()
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getSheetByName('Tutorial Data');
    sheet.clear();
    var tutorialID = '0Aq4s9w_HxMs7dFNtWlh2MHRWZzEtbk5LRW5hTVR1Y1E';
    var tutorialDataRange = SpreadsheetApp.openById(tutorialID).getSheets()[0].getDataRange();
    var range = sheet.getRange(1,1,tutorialDataRange.getNumRows(), tutorialDataRange.getNumColumns());
    range.setValues(tutorialDataRange.getValues());
  }
  
  /**
  *  Sample: get all data from Engineering employees
  */
  
  function getEngineers()
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ssDB = objDB.open( ss.getId());
    var rows = objDB.getRows(ssDB, 'Tutorial Data', [], {Department:'Engineering'});
    Logger.log( rows );
  }
  
  /**
  *  Sample: get John's phone number
  *  Note that non-alphanumeric characters are stripped from column names: Phone Number becomes PhoneNumber
  */
  
  function getPhone()
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ssDB = objDB.open( ss.getId());
    var rows = objDB.getRows(ssDB, 'Tutorial Data', ['PhoneNumber'], {FirstName:'John'});
    Logger.log( rows );
  }
  
  /**
  *  Delete staff with id's 1342 and 1234 
  */
  
  function deleteStaff()
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ssDB = objDB.open( ss.getId());
    var rowCount = objDB.deleteRow(ssDB, 'Tutorial Data', {EmployeeId:[1342,1234]});
    Logger.log( rowCount );
  }
  
  /**
  *  Update: staff 3512 goes to marketing
  */
  
  function updateStaff()
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ssDB = objDB.open( ss.getId());
    var rowCount = objDB.updateRow(ssDB, 'Tutorial Data', {Department:'Marketing'}, {EmployeeId:3512});
    Logger.log( rowCount );
  }
  
  /**
  *  Add new employee
  */
  
  function addStaff()
  {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    ssDB = objDB.open( ss.getId());
    var rowCount = objDB.insertRow(ssDB, 'Tutorial Data', {FirstName:'Harry', LastName:'Potter', EmployeeId:4321, Department:'Magic',PhoneNumber:'(212) 123-4567'});
    Logger.log( rowCount );
  }
  </code></pre>