我正在努力为我工作的学校创建一个预订房间。 如果我保持谷歌表不受保护,用户很容易破坏电子表格中的公式。但是,如果我将其锁定为仅我自己,则他们无法使用电子表格。我的想法是锁定编辑给自己,然后让代码像我一样运行。
我已经阅读了运行代码的唯一方法,因为我自己是通过网络应用程序。我已经创建了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")
}