从website / localhost运行app脚本功能

时间:2017-02-26 18:21:15

标签: javascript google-apps-script

我真的需要帮助从我的网站/ localhost在谷歌应用程序脚本中运行我的功能。

已在谷歌搜索,结果必须使用google.script.run。当我尝试它时,我发现google不起作用的错误。

这是应用程序脚本中的.gs代码:

/**
*  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 );
}

3 个答案:

答案 0 :(得分:1)

我仔细阅读了Google的App脚本。 App Script基本上是为了向开发人员提供扩展谷歌应用程序(电子表格,日历,gmail,doc等)的服务而构建的,并且它们按设计预计将从谷歌云服务器定位和运行

因此,您无法在您的网站/ localhost上运行它们,因为GS脚本是在服务器端执行的(谷歌服务器)。

唯一建议的方法是is to make an htmlService app and use ajax from the frontend。我认为不是你的情况。

答案 1 :(得分:1)

可能是你能做的最好和最简单的事情。

使用本地隧道https://localtunnel.github.io/www/ 这样就可以从任何计算机或 Google 服务器访问您的本地主机

Localtunnel 允许您在本地开发机器上轻松共享 Web 服务,而不会弄乱 DNS 和防火墙设置。

将 baseURL 更改为本地隧道提供的 URL,它会像魅力一样工作。

答案 2 :(得分:0)

要从外部网页或服务运行Google Apps脚本,您可以使用Google Apps Script Execution API。此链接包含多种语言的示例,包括但不限于JavaScript,PHP和Python。