在Google Sheet脚本中运行来自webapp的代码

时间:2018-01-29 15:09:54

标签: web-applications google-sheets-query

我正在努力为我工作的学校创建一个预订房间。 如果我保持谷歌表不受保护,用户很容易破坏电子表格中的公式。但是,如果我将其锁定为仅我自己,则他们无法使用电子表格。我的想法是锁定编辑给自己,然后让代码像我一样运行。

我已经阅读了运行代码的唯一方法,因为我自己是通过网络应用程序。我已经创建了doGet函数,当我按照指向Web应用程序的链接完成时,我得到了“成功”消息并且电子表格被更改了(当前的doGet只是用于测试其功能的草稿)。但是,使用UrlFetchApp命令时根本没有任何事情发生。我已授权我提示的所有内容。

请忽略任何不必要的行或编码错误,我对此完全陌生。 任何帮助将非常感激。

function onOpen()
{ 
 
    
    var ui = SpreadsheetApp.getUi();
    ui.createMenu('Book Room').addItem('Book Room', 'Userinterface').addToUi(); 
  
     
  
}
function Userinterface() 
{
  var app = UiApp.createApplication();
  app.setTitle("RoomBooking");
  
  var panel = app.createVerticalPanel();
  var label = app.createLabel();
  
  var textbox = app.createTextBox();
  textbox.setName("txt1");
  
  var button = app.createButton("Submit");
  var handler = app.createServerHandler("Clickevent");
  button.addClickHandler(handler);
  handler.addCallbackElement(panel);
  
  panel.add(textbox);
  panel.add(button);
  
  
  app.add(panel);
  
  var doc = SpreadsheetApp.getActive();
  doc.show(app);
}
function Clickevent(e)
{
  
  var request = UrlFetchApp.fetch("https://script.google.com/a/st-swithuns.portsmouth.sch.uk/macros/s/AKfycbwEsUsHJ2_1VwWqu1nTh1ux2FkEwP5ul2OXBc2pTQs8Z1eV_ls/exec");
  var app = UiApp.getActiveApplication();
  var textvalue = e.parameter.txt1;
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = SpreadsheetApp.getActiveSheet();
   
  var cell = SpreadsheetApp.getActiveRange();
  var row = SpreadsheetApp.getActiveRange().getRow() - 11;
  var column = SpreadsheetApp.getActiveRange().getColumn() -2;
  if(row <=0 || row >=6 || column <=0  || column >= 8){Browser.msgBox("Please choose a cell within the booking grid.");return;}
  var finalcolumn = row*7+column-4
  var search = sh.getRange(1,26).getValue(); 
  var finalrow =1;
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Database');
  
for (var i = 1; i <= 100; i++) 
{
  if(sheet.getRange(i,1).getValue() == search){break;}
  finalrow +=1;
  
}
  if(sheet.getRange(finalrow, finalcolumn).getValue() == "")
  {
  sheet.getRange(finalrow, finalcolumn).setValue(textvalue);
   
  }
  else{Browser.msgBox("This room has already been booked on time and date."); return;}
  
  
 
  return app.close();
}
function doGet(e)
{
  var spreadsheet = SpreadsheetApp.openById("1eOqf1Cofkz9u0Zg2UIb9Ana3VQC5PN0aZqWQkip2d2w").getSheetByName('Bookings').getRange('A1').setValue("hihihihihihi");
  
  return ContentService.createTextOutput("Success")
}

0 个答案:

没有答案