Google apps script 在Google站点上传文件-文件柜,列表页-doPost问题,意外错误
我让这个脚本工作,但几周前它突然停止了-我假设我犯了一些编程错误,但我已经几个星期无法调试了 我希望谷歌网站上有一个脚本,允许某人上传一个文件(和一些其他信息,如其名称),并让脚本将其附加到一个新的文件柜页面,然后用新页面的信息更新列表页面 我使用了一篇旧论坛帖子中的部分代码,在需要的地方进行了更新。如果有人知道更简单的方法,我不反对重写 谢谢 编辑:问题似乎出在doPost(e)函数中-点击submit后,什么也没有发生,小工具变为空白,我收到错误消息:“发生了意外错误。”Google apps script 在Google站点上传文件-文件柜,列表页-doPost问题,意外错误,google-apps-script,Google Apps Script,我让这个脚本工作,但几周前它突然停止了-我假设我犯了一些编程错误,但我已经几个星期无法调试了 我希望谷歌网站上有一个脚本,允许某人上传一个文件(和一些其他信息,如其名称),并让脚本将其附加到一个新的文件柜页面,然后用新页面的信息更新列表页面 我使用了一篇旧论坛帖子中的部分代码,在需要的地方进行了更新。如果有人知道更简单的方法,我不反对重写 谢谢 编辑:问题似乎出在doPost(e)函数中-点击submit后,什么也没有发生,小工具变为空白,我收到错误消息:“发生了意外错误。” 函数doGet(e
函数doGet(e){
返回getUi(e);
}
函数getUi(e){
//创建用于上载信息的用户界面
var app=UiApp.createApplication().setTitle('文件上载');
var form=app.createFormPanel().setId('form').setEncoding('multipart/form data');
//创建网格以存储信息
var formContent=app.createGrid().resize(6,2);
setText(0,0,“文件名:”);
var fileName=app.createTextBox().setName('fileName').setId('fileName');
setWidget(0,1,文件名);
var fileUpload=app.createFileUpload().setName('fileUpload').setId('fileUpload');
setWidget(1,1,文件上传);
setWidget(2,0,app.createLabel('Short Description:');
var fileDescription=app.createTextBox().setName('fileDescription').setId('fileDescription');
setWidget(2,1,文件描述);
setText(3,0,'Level:');
var level=app.createListBox().setName('level').setId('level').addItem('productional').addItem('mediate').addItem('Advanced');
setWidget(3,1级);
setText(4,0,'Subject:');
var subject=app.createListBox().setName('subject').setId('subject').addItem('basicals').addItem('Observing').addItem('sular System').addItem('Stars').addItem('starr Evolution').addItem('银河系').addItem('games').addItem('Cosmology').addItem('
formContent.setWidget(4,1,主题);
var submitButton=app.createSubmitButton(“提交”).setId(“提交按钮”);
setWidget(5,1,submitButton);
//var handler=app.createServerHandler(“pauseUi”);
//submitButton.addClickHandler(handler);
表格。添加(表格内容);
应用程序添加(表格);
var resultTextArea=app.createTextArea().setName(“resultArea”).setId(“resultArea”);
resultTextArea.setVisibleLines(5);
resultTextArea.setSize(“80%”,即“80%”);
应用程序添加(resultTextArea);
var ogga=‘好上帝’;
Logger.log(ogga);
返回应用程序;
}
函数pauseUi(e){
var app=UiApp.getActiveApplication();
app.getElementById(“文件”).setEnabled(false);
app.getElementById(“文件名”).setEnabled(false);
app.getElementById(“fileDescription”).setEnabled(false);
app.getElementById(“submitButton”).setEnabled(false);
app.getElementById(“级别”).setEnabled(false);
app.getElementById(“主题”).setEnabled(false);
app.getElementById(“resultArea”).setEnabled(false);
app.getElementById(“resultArea”).setText('请稍候…');
返回应用程序;
}
函数重置UI(应用程序){
app.getElementById(“文件”).setEnabled(true);
app.getElementById(“文件名”).setEnabled(true);
app.getElementById(“fileDescription”).setEnabled(true);
app.getElementById(“submitButton”).setEnabled(true);
app.getElementById(“级别”).setEnabled(true);
app.getElementById(“主题”).setEnabled(true);
app.getElementById(“resultArea”).setEnabled(true);
}
函数doPost(e){
var app=UiApp.getActiveApplication();
Logger.log(即参数);
//为上传的文件创建新页面
var msg=createNewPage(e.parameter.fileName,e.parameter.fileUpload,e.parameter.fileDescription,e.parameter.level,e.parameter.subject);
//重置上传页面
resetUi(app);
//通知用户成功或失败
app.getElementById(“resultArea”).setText(msg.join('\n'));
返回应用程序;
}
函数createNewPage(文件名、上载文件、文件描述、级别、主题){
//站点信息
var mysite=SitesApp.getSite(“uw.edu”,“介绍性天文学信息交换所”);
var labsPage=mysite.getChildByName(“实验室练习”);
Logger.log('lab页的url为:'+labsPage.getUrl());
var msg=[];
//创建新页面
var page=findPage(文件名);
如果(第==null页){
var page=labsPage.createFileCabinetPage(文件名,normalizeName(文件名),“”);
}
试一试{
//将文件添加到文件柜
var attachment=page.addHostedAttachment(上传文件);
//查看是否已在列表中列出
var listItem=getFileListItem(文件名);
如果(listItem==null){
var fileUrl=page.getUrl();
var newValues=[repairUrlValue(fileUrl,fileName),fileDescription,level,subject];
labsPage.addListItem(新值);
}
msg.push('刷新页面以查看添加的项目或在以下位置编辑文件:'+fileUrl);
}捕获(e){
msg.push('未能上载'+fileName+'附件,可能是由于大小限制或超时问题。');
}
返回味精;
}
函数getFileListItem(文件名){
var mysite=SitesApp.getSite(“uw.edu”,“介绍性天文学信息交换所”);
var labPage=mysite.getChildByName(“实验室练习”);
var i=getListItemIndex(labPage,文件名,0);
var items=labPage.getListItems();
Logger.log('labPage列表项'+项[i].getValueByIndex(0));
return(i>-1)?labPage.getListItems()[i]:null;
}
//获取项目的索引
函数getListItemIndex(listPage、propOneValue、propOneIndex){
//对于propOneIndex列,返回等于propOneValue的索引(行),或-1。
var listItems=listPage.getListItems();
Logger.log('listItems'+listItems.length);
var r=-1;
对于(变量i=0;i 0){
键+='-';
继续;
}
如果(!isAlnum(字母)){
继续;
}
if(key.length==0&&isDigit(字母)){
continue;//必须输入第一个字符
function doGet(e){
return getUi(e);
}
function getUi(e) {
//create user interface for uploading information
var app = UiApp.createApplication().setTitle('File Upload');
var form = app.createFormPanel().setId('form').setEncoding('multipart/form-data');
//create grid to store information
var formContent = app.createGrid().resize(6,2);
formContent.setText(0,0,'File Name: ');
var fileName = app.createTextBox().setName('fileName').setId('fileName');
formContent.setWidget(0,1,fileName);
var fileUpload = app.createFileUpload().setName('fileUpload').setId('fileUpload');
formContent.setWidget(1,1,fileUpload);
formContent.setWidget(2,0,app.createLabel('Short Description: '));
var fileDescription = app.createTextBox().setName('fileDescription').setId('fileDescription');
formContent.setWidget(2,1,fileDescription);
formContent.setText(3,0,'Level: ');
var level = app.createListBox().setName('level').setId('level').addItem('Introductory').addItem('Intermediate').addItem('Advanced');
formContent.setWidget(3,1,level);
formContent.setText(4,0,'Subject: ');
var subject = app.createListBox().setName('subject').setId('subject').addItem('Fundamentals').addItem('Observing').addItem('Solar System').addItem('Stars').addItem('Stellar Evolution').addItem('Milky Way').addItem('Galaxies').addItem('Cosmology')
formContent.setWidget(4,1,subject);
var submitButton = app.createSubmitButton("Submit").setId("submitButton");
formContent.setWidget(5,1,submitButton);
//var handler = app.createServerHandler("pauseUi");
//submitButton.addClickHandler(handler);
form.add(formContent);
app.add(form);
var resultTextArea = app.createTextArea().setName("resultArea").setId("resultArea");
resultTextArea.setVisibleLines(5);
resultTextArea.setSize("80%","80%");
app.add(resultTextArea);
var ogga = 'good god';
Logger.log(ogga);
return app;
}
function pauseUi(e){
var app = UiApp.getActiveApplication();
app.getElementById("file").setEnabled(false);
app.getElementById("fileName").setEnabled(false);
app.getElementById("fileDescription").setEnabled(false);
app.getElementById("submitButton").setEnabled(false);
app.getElementById("level").setEnabled(false);
app.getElementById("subject").setEnabled(false);
app.getElementById("resultArea").setEnabled(false);
app.getElementById("resultArea").setText('Please wait...');
return app;
}
function resetUi(app){
app.getElementById("file").setEnabled(true);
app.getElementById("fileName").setEnabled(true);
app.getElementById("fileDescription").setEnabled(true);
app.getElementById("submitButton").setEnabled(true);
app.getElementById("level").setEnabled(true);
app.getElementById("subject").setEnabled(true);
app.getElementById("resultArea").setEnabled(true);
}
function doPost(e){
var app = UiApp.getActiveApplication();
Logger.log(e.parameter);
//create new page for uploaded file
var msg = createNewPage(e.parameter.fileName,e.parameter.fileUpload,e.parameter.fileDescription,e.parameter.level,e.parameter.subject);
//reset upload page
resetUi(app);
//notify user of success or failure
app.getElementById("resultArea").setText(msg.join('\n'));
return app;
}
function createNewPage(fileName,uploadedFile,fileDescription,level,subject){
//site information
var mysite = SitesApp.getSite("uw.edu","introductory-astronomy-clearinghouse");
var labsPage = mysite.getChildByName("labs-exercises");
Logger.log('url for lab page is: '+labsPage.getUrl());
var msg = [];
//create new page
var page = findPage(fileName);
if (page == null){
var page = labsPage.createFileCabinetPage(fileName, normalizeName(fileName), '');
}
try{
//add file to file cabinet
var attachment = page.addHostedAttachment(uploadedFile);
//see if already listed on list
var listItem = getFileListItem(fileName);
if (listItem == null) {
var fileUrl = page.getUrl();
var newValues = [repairUrlValue(fileUrl, fileName), fileDescription, level, subject];
labsPage.addListItem(newValues);
}
msg.push('Refresh page to see your item added or edit your file at: '+fileUrl);
} catch(e){
msg.push('Failed to upload the '+ fileName +' attachment, possibly due to size constraints or time out issues.');
}
return msg;
}
function getFileListItem(fileName){
var mysite = SitesApp.getSite("uw.edu","introductory-astronomy-clearinghouse");
var labPage = mysite.getChildByName("labs-exercises");
var i = getListItemIndex(labPage,fileName,0);
var items = labPage.getListItems();
Logger.log('labPage list item'+items[i].getValueByIndex(0));
return (i>-1)? labPage.getListItems()[i]:null;
}
//get the index of your item
function getListItemIndex(listPage,propOneValue,propOneIndex){
//for column propOneIndex, returns index (row) that equals propOneValue, or -1.
var listItems = listPage.getListItems();
Logger.log('listItems '+listItems.length);
var r = -1;
for (var i = 0;i<listItems.length && r<0;i++){
if ((listItems[i].getValueByIndex(propOneIndex) == propOneValue)){r = i;}
}
return r;
}
//repairs URL
function repairUrlValue(url,text){
Logger.log('buildAnchor for'+text+'->'+url);
var a = '<a href="'+url+'">"'+text+'</a>';
Logger.log('...built '+a);
return a;
}
//find name of page with normalized name
function findPage(name){
var mysite = SitesApp.getSite("uw.edu","introductory-astronomy-clearinghouse");
var parentPage = mysite.getChildByName("labs-exercises");
var norm = normalizeName(name);
var page = parentPage.getChildByName(norm);
Logger.log('findPage '+page.getUrl());
return page;
}
//get size of attached file in KB
function getBlobSize(blob) {
return Math.round(blob.getBytes().length/1024)+" KB";
}
//put the name into reasonable form
function normalizeName(header){
var key = "";
for (var i = 0; i < header.length; ++i){
var letter = header[i];
if (letter == " " && key.length > 0){
key +='-';
continue;
}
if (!isAlnum(letter)){
continue;
}
if (key.length == 0 && isDigit(letter)){
continue; //first character must be a letter
}
key += letter.toLowerCase();
}
Logger.log("normalizeName from '"+header+"' to '"+key+"'");
return key;
}
/*
i s A l n u m
Returns true if the character char is alphabetical, false otherwise
*/
function isAlnum(char){
return char >= 'A' && char <= 'Z' ||
char >='a' && char <= 'z' ||
isDigit(char);
}
/* i s D i g i t
Returns true if the character is a digit, false otherwise.
*/
function isDigit(char){
return char >='0' && char <= '9';
}
app.getElementById("file").setEnabled(false);