2014-02-21 62 views
0

我有一段代碼正在測試,試圖學習如何使用Google UI Apps腳本將電子表格轉換爲pdf。代碼創建並寫入電子表格,但pdf附件爲空白。希望得到這個工作的任何幫助。謝謝。Google UI Apps腳本:將電子表格轉換爲PDF時的空白PDF

var newSpreadsheet = SpreadsheetApp.create("My Test Sheet"); 
var columnNames = ["First Name", "Last Name", "Department"]; 
newSpreadsheet.getSheetByName('Sheet1').activate(); 

var headersRange = newSpreadsheet.getActiveSheet().getRange(1, 1, 1, columnNames.length); 
headersRange.setValues([columnNames]); 

var pdf = DocsList.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes(); 
var attach = {fileName:'My Test PDF.pdf',content:pdf, mimeType:'application/pdf'}; 

// Send email 
MailApp.sendEmail("[email protected]", "subject", "message", {attachments:[attach]}); 
+0

注意,你可以使用MailApp.sendEmail(Session.getEffectiveUser()getEmail(), 「主題」, 「消息」,{附件:[附]}。 ); 而不必硬編碼您的電子郵件... –

回答

0

您不應再使用DocList。改用DriveApp。下面與您的代碼的小修改的解決方案:

function toPdf(id){ 
SpreadsheetApp.flush(); 
// var ssDoc = DriveApp.getFileById(SpreadsheetApp.getActiveSpreadsheet().getId()); 
    var ssDoc = DriveApp.getFileById(id); 
var pdf = DriveApp.createFile(ssDoc.getAs(MimeType.PDF)); 
    return pdf.getBlob().getBytes(); 
} 


function user2943227(){ 
    var newSpreadsheet = SpreadsheetApp.create("My Test Sheet"); 
    var columnNames = ["First Name", "Last Name", "Department"]; 
// newSpreadsheet.getSheetByName('Sheet1').activate(); 

    var headersRange = newSpreadsheet.getActiveSheet().getRange(1, 1, 1, columnNames.length); 
    headersRange.setValues([columnNames]); 

// var pdf = DocsList.getFileById(newSpreadsheet.getId()).getAs('application/pdf').getBytes(); 
    var pdf = toPdf(newSpreadsheet.getId()); 
    var attach = {fileName:'My Test PDF.pdf',content:pdf, mimeType:'application/pdf'}; 

    // Send email 
    MailApp.sendEmail("[email protected]", "subject", "message", {attachments:[attach]}); 

} 
+0

DocsList也可以正常工作,唯一有用的更改是添加了'flush',以便在轉換前更新電子表格。 –

+0

@Sergeinsas me dit pas que tu ne penses pas que doclist estvouéàmourrir!我們加上vieux que drive et il est toujours en模式「實驗」。 Ca發送了la vielle chaussette doclist。 Ceci dit il est vrai que je n'ai pasverifiéle code d'origine,mais le code que j'aipostémarche。 – Harold

相關問題