2014-02-06 157 views
4

我不熟悉腳本。我從這裏複製了代碼Upload image to Google Spreadsheet使用Apps腳本將圖像上傳到Google電子表格

原始腳本允許用戶通過網絡應用程序表單上載1個圖像,然後該圖像將追加到Google電子表格中的一行和Google文檔中。我已經能夠修改網頁應用程序表單以允許用戶上傳2張圖片,但我無法弄清楚如何將第二張圖片加入電子表格和文檔。

var submissionSSKey = 'Google Spreadsheet key'; 
var docurl = 'Google document URL' 
var listitems = ['Select a category','Portrait','Landscape','Other','Night shots','Nature','Various'] 
var Panelstyle = {'background':'#dddddd','padding':'40px','borderStyle':'solid','borderWidth':'10PX','borderColor':'#bbbbbb'} 

function doGet() { 
    var app = UiApp.createApplication().setTitle('Photography contest').setStyleAttribute('padding','50PX'); 
    var panel = app.createFormPanel().setStyleAttributes(Panelstyle).setPixelSize(400, 200); 
    var title = app.createHTML('<B>Photography contest</B>').setStyleAttribute('color','grey').setStyleAttribute('fontSize','25PX'); 
    var grid = app.createGrid(7,2).setId('grid'); 
    var list1 = app.createListBox().setName('list1').setWidth('130'); 
    for(var i in listitems){list1.addItem(listitems[i])}  
    var Textbox1 = app.createTextBox().setWidth('150px').setName('TB1'); 
    var email = app.createTextBox().setWidth('150px').setName('mail'); 
    var upLoad = app.createFileUpload().setName('uploadedFile'); 
    var upLoad1 = app.createFileUpload().setName('uploadedFile1'); 
    var submitButton = app.createSubmitButton('<B>Submit</B>'); 
    var warning = app.createHTML('Please fill in all fields').setStyleAttribute('background','#bbbbbb').setStyleAttribute('fontSize','18px'); 
    //file upload 
    var cliHandler2 = app.createClientHandler() 
    .validateLength(Textbox1, 1, 40).validateNotMatches(list1,'Select a category').validateEmail(email).validateNotMatches(upLoad, 'FileUpload'); 


    var cliHandler3 = app.createClientHandler() 
    .validateNotMatches(upLoad1, 'FileUpload').forTargets(submitButton).setEnabled(true) 
    .forTargets(warning).setHTML('Now you can submit your form').setStyleAttribute('background','#99FF99').setStyleAttribute('fontsize','12px'); 

    //Grid layout of items on form 
    grid.setWidget(0, 1, title) 
     .setText(1, 0, 'Category') 
     .setWidget(1, 1, list1.addClickHandler(cliHandler2)) 
     .setText(2, 0, 'Name') 
     .setWidget(2, 1, Textbox1.addClickHandler(cliHandler2)) 
     .setText(3, 0, 'Email') 
     .setWidget(3, 1, email) 
     .setText(4, 0, 'Image File') 
     .setWidget(4, 1, upLoad.addChangeHandler(cliHandler2)) 
     .setWidget(5, 1, upLoad1.addChangeHandler(cliHandler3)) 
     .setWidget(6, 0, submitButton) 
     .setWidget(6, 1, warning); 

    var cliHandler = app.createClientHandler().forTargets(warning).setHTML('<B>PLEASE WAIT WHILE THE FILE IS UPLOADING<B>').setStyleAttribute('background','yellow'); 
    submitButton.addClickHandler(cliHandler).setEnabled(false); 
    panel.add(grid); 
    app.add(panel); 
    return app; 
} 


function doPost(e) { 
    var app = UiApp.getActiveApplication(); 
    var ListVal = e.parameter.list1; 
    var textVal = e.parameter.TB1; 
    var Email = e.parameter.mail; 
    var fileBlob = e.parameter.uploadedFile; 
    var blob = fileBlob.setContentTypeFromExtension() 
    var img = DocsList.createFile(blob); 
    try{ 
    var folder = DocsList.getFolder('photos'); 
    }catch(e){DocsList.createFolder('photos');var folder = DocsList.getFolder('photos')} 
    img.addToFolder(folder); 
    img.removeFromFolder(DocsList.getRootFolder()); 
    var weight = parseInt(img.getSize()/1000); 
    var sheet = SpreadsheetApp.openById(submissionSSKey).getSheetByName('Sheet1'); 
    var lastRow = sheet.getLastRow(); 
    var targetRange = sheet.getRange(lastRow+1, 1, 1, 4).setValues([[ListVal,textVal,Email,"https://drive.google.com/uc?export=view&id="+img.getId()]]); 
    var imageInsert = sheet.getRange(lastRow+1, 5).setFormula('=image("https://drive.google.com/uc?export=view&id='+img.getId()+'")'); 
    sheet.setRowHeight(lastRow+1, 80); 
    var GDoc = DocumentApp.openByUrl(docurl) 
    GDoc.appendTable([['Category : '+ListVal,'Name : '+textVal,'Email : '+Email]]) 
    var inlineI = GDoc.appendImage(img); 
    var width = inlineI.getWidth(); 
    var newW = width; 
    var height = inlineI.getHeight(); 
    var newH = height; 
    var ratio = width/height; 


    var fileBlob1 = e.parameter.uploadedFile1; 
    var blob1 = fileBlob1.setContentTypeFromExtension() 
    var img1 = Doclist.createFile(blob1); 
    try{ 
    var folder = DocsList.getFolder('photos'); 
    }catch(e){DocsList.createFolder('photos');var folder = DocsList.getFolder('photos')} 
    img1.addToFolder(folder); 
    img1.removeFromFolder(DocsList.getRootFolder()); 
    var weight = parseInt(img1.getSize()/1000); 
    var sheet = SpreadsheetApp.openById(submissionSSKey).getSheetByName('Sheet2'); 
    var lastRow = sheet.getLastRow(); 
    var targetRange = sheet.getRange(lastRow+1, 1, 1, 5).setValues([[ListVal,textVal,Email,"https://drive.google.com/uc?export=view&id="+img1.getId()]]); 
    var imageInsert = sheet.getRange(lastRow+1, 6).setFormula('=image("https://drive.google.com/uc?export=view&id='+img1.getId()+'")'); 
    sheet.setRowHeight(lastRow+1, 80); 
    var GDoc = DocumentApp.openByUrl(docurl) 
    GDoc.appendTable([['Category : '+ListVal,'Name : '+textVal,'Email : '+Email]]) 
    var inlineI = GDoc.appendImage(img1); 
    var width = inlineI.getWidth(); 
    var newW = width; 
    var height = inlineI.getHeight(); 
    var newH = height; 
    var ratio = width/height; 


    Logger.log('w='+width+'h='+height+' ratio='+ratio); 
    if(width>640){ 
    newW = 640; 
    newH = parseInt(newW/ratio); 
    } 
    inlineI.setWidth(newW).setHeight(newH) 
    GDoc.appendParagraph('IMAGE size : '+width+' x '+height+' (eventually) resized to '+newW+' x '+newH+' for PREVIEW ('+weight+' kB) '); 
    GDoc.appendHorizontalRule(); 
    GDoc.saveAndClose(); 
    app.add(app.createLabel('Thank you for submitting')); 
    return app 
} 

回答

2

因爲我寫的劇本最初我還以爲我得幫這個第二個版本:-)

這是新的doPost:

function doPost(e) { 
    var app = UiApp.getActiveApplication(); 
    var ListVal = e.parameter.list1; 
    var textVal = e.parameter.TB1; 
    var Email = e.parameter.mail; 
    var fileBlob1 = e.parameter.uploadedFile; 
    var blob1 = fileBlob1.setContentTypeFromExtension() 
    var img1 = DocsList.createFile(blob1); 
    var fileBlob2 = e.parameter.uploadedFile1; 
    var blob2 = fileBlob2.setContentTypeFromExtension() 
    var img2 = DocsList.createFile(blob2); 
    try{ 
    var folder = DocsList.getFolder('photos'); 
    }catch(e){DocsList.createFolder('photos');var folder = DocsList.getFolder('photos')} 
    img1.addToFolder(folder); 
    img1.removeFromFolder(DocsList.getRootFolder()); 
    img2.addToFolder(folder); 
    img2.removeFromFolder(DocsList.getRootFolder()); 
    var weight1 = parseInt(img1.getSize()/1000); 
    var weight2 = parseInt(img2.getSize()/1000); 
    var sheet = SpreadsheetApp.openById(submissionSSKey).getSheetByName('Sheet1'); 
    var lastRow = sheet.getLastRow(); 
    var targetRange = sheet.getRange(lastRow+1, 1, 1, 5).setValues([[ListVal,textVal,Email,"https://drive.google.com/uc?export=view&id="+img1.getId(),"https://drive.google.com/uc?export=view&id="+img2.getId()]]); 
    var image1Insert = sheet.getRange(lastRow+1, 6).setFormula('=image("https://drive.google.com/uc?export=view&id='+img1.getId()+'")'); 
    var image2Insert = sheet.getRange(lastRow+1, 7).setFormula('=image("https://drive.google.com/uc?export=view&id='+img2.getId()+'")'); 
    sheet.setRowHeight(lastRow+1, 80); 
    var GDoc = DocumentApp.openByUrl(docurl) 
    GDoc.appendTable([['Category : '+ListVal,'Name : '+textVal,'Email : '+Email]]) 
    var inlineI = GDoc.appendImage(img1); 
    var width = inlineI.getWidth(); 
    var newW = width; 
    var height = inlineI.getHeight(); 
    var newH = height; 
    var ratio = width/height; 
    Logger.log('w='+width+'h='+height+' ratio='+ratio); 
    if(width>640){ 
    newW = 640; 
    newH = parseInt(newW/ratio); 
    } 
    inlineI.setWidth(newW).setHeight(newH) 
    GDoc.appendParagraph('IMAGE size : '+width+' x '+height+' (eventually) resized to '+newW+' x '+newH+' for PREVIEW ('+weight1+' kB) '); 
    var inlineI = GDoc.appendImage(img2); 
    var width = inlineI.getWidth(); 
    var newW = width; 
    var height = inlineI.getHeight(); 
    var newH = height; 
    var ratio = width/height; 
    Logger.log('w='+width+'h='+height+' ratio='+ratio); 
    if(width>640){ 
    newW = 640; 
    newH = parseInt(newW/ratio); 
    } 
    inlineI.setWidth(newW).setHeight(newH) 
    GDoc.appendParagraph('IMAGE size : '+width+' x '+height+' (eventually) resized to '+newW+' x '+newH+' for PREVIEW ('+weight2+' kB) '); 
    GDoc.appendHorizontalRule(); 
    GDoc.saveAndClose(); 
    app.add(app.createLabel('Thank you for submitting')); 
    return app 
} 

,並與一些修改中的doGet:

var submissionSSKey = '11nxqFSYCqrtF1ukfbuVAJy9bnBnxkLTH0dIAIRKxZxo'; 
var docurl = 'https://docs.google.com/document/d/1xEQC63NP4D6bebTVeP1u1nagvVm6vE2KFedRuk86VFc/edit' 
var listitems = ['Select a category','Portrait','Landscape','Other','Night shots','Nature','Various'] 
var Panelstyle = {'background':'#dddddd','padding':'40px','borderStyle':'solid','borderWidth':'10PX','borderColor':'#bbbbbb'} 

function doGet() { 
    var app = UiApp.createApplication().setTitle('Photography contest').setStyleAttribute('padding','50PX'); 
    var panel = app.createFormPanel().setStyleAttributes(Panelstyle).setPixelSize(400, 200); 
    var title = app.createHTML('<B>Photography contest</B>').setStyleAttribute('color','grey').setStyleAttribute('fontSize','25PX'); 
    var grid = app.createGrid(7,2).setId('grid'); 
    var list1 = app.createListBox().setName('list1').setWidth('130'); 
    for(var i in listitems){list1.addItem(listitems[i])}  
    var Textbox1 = app.createTextBox().setWidth('150px').setName('TB1'); 
    var email = app.createTextBox().setWidth('150px').setName('mail'); 
    var upLoad = app.createFileUpload().setName('uploadedFile'); 
    var upLoad1 = app.createFileUpload().setName('uploadedFile1'); 
    var submitButton = app.createSubmitButton('<B>Submit</B>'); 
    var warning = app.createHTML('Please fill in all fields').setStyleAttribute('background','#bbbbbb').setStyleAttribute('fontSize','18px'); 
    //file upload 
    var cliHandler2 = app.createClientHandler() 
    .validateLength(Textbox1, 1, 40).validateNotMatches(list1,'Select a category').validateEmail(email).validateNotMatches(upLoad, 'FileUpload'); 


    var cliHandler3 = app.createClientHandler() 
    .validateNotMatches(upLoad1, 'FileUpload').forTargets(submitButton).setEnabled(true) 
    .forTargets(warning).setHTML('Now you can submit your form').setStyleAttribute('background','#99FF99').setStyleAttribute('fontsize','12px'); 

    //Grid layout of items on form 
    grid.setWidget(0, 1, title) 
     .setText(1, 0, 'Category') 
     .setWidget(1, 1, list1.addClickHandler(cliHandler2)) 
     .setText(2, 0, 'Name') 
     .setWidget(2, 1, Textbox1.addClickHandler(cliHandler2)) 
     .setText(3, 0, 'Email') 
     .setWidget(3, 1, email) 
     .setText(4, 0, 'Image File') 
     .setWidget(4, 1, upLoad.addChangeHandler(cliHandler2)) 
     .setWidget(5, 1, upLoad1.addChangeHandler(cliHandler3)) 
     .setWidget(6, 0, submitButton) 
     .setWidget(6, 1, warning); 

    var cliHandler = app.createClientHandler().forTargets(warning).setHTML('<B>PLEASE WAIT WHILE THE FILE IS UPLOADING<B>').setStyleAttribute('background','yellow'); 
    submitButton.addClickHandler(cliHandler).setEnabled(false); 
    panel.add(grid); 
    app.add(panel); 
    return app; 
} 
+0

Serge insas你真棒!謝謝!!有一件事,我仍然在圖像的預覽單元格中找到#N/A「錯誤:在url中找不到圖像...」。僅供參考:我在Google Apps域中執行此操作。不知道這是否有所作爲。 –

+0

我也發佈了doGet,我忘了我也做了一些小改動,對不起... –

+0

這個作品真棒!你已經完成了我的一週。仍然存在ss中圖像預覽的#N/A錯誤。小問題,我可以使用你提供的。再次感謝! –

相關問題