2013-09-27 149 views
0

我有一個谷歌電子表格,它有以下7列:1)房間號碼,2)服務員1名稱,3)服務員2名稱,4)服務員3名稱, 5)服務員1經驗,6)服務員2經驗,7)服務員3經驗。我想用電子表格創建一個文檔或pdf,只有3列:1)房間號碼,2)服務員姓名,3)服務員經驗。也就是說,每個房間的服務員的名字和服務員的經歷應該都是三個服務員之一。數據現在只用3列而不是7列出。任何線索我如何編寫一個谷歌應用腳​​本來做到這一點?從谷歌電子表格提取部分數據到谷歌文檔

回答

1

你從小就玩過積木嗎?在這段代碼中你應該這樣做:提取細胞數據並按照你想要的方式重新組合它...

幾個for loops很容易完成這項工作,下面的代碼顯示了一種方法來完成它,它創建原始電子表格中的新工作表以及數據顯示在表中的新文檔。

您必須添加一些格式改進才能看起來更好,但數據在那裏,這就是您的問題的要點。

function myFunction() { 
    var sh = SpreadsheetApp.getActiveSpreadsheet(); 
    var ss = sh.getActiveSheet(); 
    var inputRange = ss.getRange(1,1,ss.getLastRow(),7); 
    var data = inputRange.getValues(); 
    Logger.log(data); 
    var newData = []; 
    newData.push(['Room Number','Waiter Name','Waiter experience']); 
    for(var n=1;n<data.length;++n){ 
    for(var c=0;c<7;c=c+2){ 
     var row = []; 
     if(c==0){row.push(data[n][0]) ; c++}else{row.push(' ')}; 
     row.push(data[n][c]); 
     row.push(data[n][c+1]); 
     newData.push(row); 
     Logger.log(row); 
    } 
    } 
    Logger.log(newData); 
    sh.insertSheet().getRange(1,1,newData.length,newData[0].length).setValues(newData); 
    var doc = DocumentApp.create('New Waiter list').getBody().appendTable(newData); 
} 

編輯:這裏是如何處理文檔表格的格式 - 我只是不能讓水平對齊方式工作.... 不知道爲什麼

function reformatTable() { 
    var sh = SpreadsheetApp.getActiveSpreadsheet(); 
    var ss = sh.getSheets()[0];// here I chose to always get the first sheet in the spreadsheet 
    var inputRange = ss.getRange(1,1,ss.getLastRow(),7); 
    var data = inputRange.getValues(); 
    var newData = []; 
    newData.push(['Room Number','Waiter Name','Waiter experience']); 
    for(var n=1;n<data.length;++n){ // skip headers by starting at 1 
    for(var c=0;c<7;c=c+2){ 
     var row = []; 
     if(c==0){row.push(data[n][0]) ; c++}else{row.push('')}; 
     row.push(data[n][c]) 
     row.push(data[n][c+1]); 
     newData.push(row); 
    } 
    } 
    sh.insertSheet().getRange(1,1,newData.length,newData[0].length).setValues(newData); 
    var doc = DocumentApp.create('New Waiter list'); // create document 
    var table = doc.getBody().appendTable(newData); // create table in a separate process so I can set the style below 
    var style = {}; 
    style[DocumentApp.Attribute.HORIZONTAL_ALIGNMENT] = DocumentApp.HorizontalAlignment.CENTER; // this one has no effect 
    style[DocumentApp.Attribute.FONT_FAMILY] = DocumentApp.FontFamily.ARIAL; 
    style[DocumentApp.Attribute.FONT_SIZE] = 10; 
    style[DocumentApp.Attribute.FOREGROUND_COLOR] = '#0000ff'; 
    style[DocumentApp.Attribute.BORDER_COLOR] = '#dddddd' ; 
    table.setAttributes(style); 
} 
+0

嗶嗶,非常感謝你!你變得如此簡單! – user1327454

相關問題