2

I'm really need help to running my function in google app script from my website/localhost.

Already search on google, and the result must use google.script.run. When I'm trying it, I found the error that google is not function.

This ini my .gs code in app script:

/**
*  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 );
}
Emran
  • 188
  • 1
  • 12
DeVoresyah
  • 86
  • 1
  • 9
  • 1
    Shouldn't you include any other .js file in your page? – behkod Feb 26 '17 at 18:46
  • @BehradKhodayar what javascript file i must include in my web page? – DeVoresyah Feb 26 '17 at 19:10
  • Usually you should include the third-party library in your document in order to be able to use it – behkod Feb 26 '17 at 19:27
  • but there is not third-party library – DeVoresyah Feb 26 '17 at 19:32
  • 2
    If you want to run Apps Script code from a non Google product, you can make an HTTPS GET or POST request to either the `doGet()` or `doPost()` functions in an Apps Script project. `doGet()` and `doPost()` are reserved function names that are triggered by a GET or POST request to the published URL of the Apps Script Web App. A return value can be sent from Apps Script back to whatever made the GET or POST request with Content Service. See the following Stack Overfow post: [SO Post Call a custom GAS function from external URL](http://stackoverflow.com/a/30127428/2946873) – Alan Wells Feb 26 '17 at 20:04
  • Just posted answer – behkod Feb 26 '17 at 20:26

3 Answers3

2

I read thorough Google's App Script. App Script is fundamentally built to provide a service to developers for extending google apps (spreadsheet, calendar, gmail, doc,...) and they are By Design expected to be located and run from google cloud servers.

So, You can not run them on your website/localhost, because GS scripts are executed server-side(google servers).

The only suggested way to do this, is to make an htmlService app and use ajax from the frontend. Which I think is not your case.

Community
  • 1
  • 1
behkod
  • 2,647
  • 2
  • 18
  • 33
  • There is another way. See [my answer](http://stackoverflow.com/a/42474052/1595451) – Rubén Feb 26 '17 at 20:45
  • @Rubén Thank you, but the case here is not dealing with API version(as I've suggested at the end of my answer). He was trying to upload the .gs files to his host/localhost & ... . That's why I've made a caution on the wrong process. – behkod Feb 26 '17 at 21:41
  • You're welcome. It looks that I didn't understand the question the same way as you by the other hand, your suggestion is not the same as mine :) – Rubén Feb 26 '17 at 21:48
2

Probably the best and easiest thing you can do.

Use Local Tunnel https://localtunnel.github.io/www/ This way your localhost can be accessed from any computer or a Google Server

Localtunnel allows you to easily share a web service on your local development machine without messing with DNS and firewall settings.

Change the baseURL to the URL provided by the local tunnel and it will work like a charm.

Nitish
  • 565
  • 4
  • 16
0

To run a Google Apps Script from an external web page or service you could use the Google Apps Script REST API (emphasis mine):

Google Apps Script API

The Google Apps Script API replaces and extends the Apps Script Execution API. The Apps Script API allows your apps to perform operations that previously could only be done in the Apps Script editor. With the API, your apps can do the following programmatically:

  • Create and modify Apps Script projects.
  • Deploy projects for use as web apps, add-ons, or executables.
  • Monitor script use and metrics.
  • Execute Apps Script functions remotely.

The above link include several examples for a wide range of languages including but no limited to JavaScript, PHP and Python.

Rubén
  • 34,714
  • 9
  • 70
  • 166