2014-03-04 162 views
0

請看看我的電子表格。腳本,打印從谷歌電子表格樣式谷歌文檔

https://docs.google.com/a/zigmens.com/spreadsheet/ccc?key=0AtXr7M_f8JAadG1qclprdXRFb3VuNXV0OXg5bDNpNkE&usp=drive_web#gid=0

我有一個菜單項,創建/工作範圍,從電子表格中提取數據,並創建谷歌驅動器的「我的車」位置的新文件。我遇到的問題是,它不包括我在電子表格中使用的版本和格式。例如,我嘗試了很多將腳本中的變量設置爲「大膽」的方法,但似乎無法使其工作。我希望有一個對象可以添加到將設置樣式的變量中。

例如,在我的劇本,我有一個名爲「降序」可變

var descr = values[n][3] ; 

我想只需要創建一個新的變量,如

var descr = values[n][3] ; 

var desc_style = descr.setStyle("bold") ; 

下面是從腳本電子表格,但我認爲最好的方法是在電子表格中更新腳本。

function jobScope() { 

    var ss = SpreadsheetApp.getActiveSheet(); 
    var values = ss.getDataRange().getValues(); 
    var docTemplate = "19ANrZluvbavWU4Ttgh1z9_DVJgEQ1hrGohd4lQAg7vI"; 
    var job_name = ss.getRange("D4").getValue(); 
    var docName = job_name+' Job Scope '; 

    var x = 1 ; 
    while(values[x][0] ^= "") {  
    ++x ; 
    } 
    var textToDoc = "" ; 
    for(n=1;n<x;++n){ 
    var cell = values[n][4] ; 
    if (cell^"0") { 
     var line_item = values[n][1]; 
     var descr = values[n][3] ; 
     textToDoc = textToDoc + line_item + " " + descr + "\n\n" ; 

    } 

    } 

    var copyId = DocsList.getFileById(docTemplate) 
    .makeCopy(docName) 
    .getId(); 

    var copyDoc = DocumentApp.openById(copyId); 

    var copyBody = copyDoc.getActiveSection(); 

    copyBody.replaceText('keyScope', textToDoc); 
    copyBody.replaceText('keyJobName', job_name); 

    copyDoc.saveAndClose(); 

} 
+0

您還需要賦予權限的文檔模板(19ANrZluvbavWU4Ttgh1z9_DVJgEQ1hrGohd4lQAg7vI)。我們需要能夠訪問該文檔以處理腳本(由於未設置爲公開,因此提供了許可錯誤)。 – thoughtcrime

+0

我公開了文檔模板。對不起,延遲。我希望收到一封電子郵件通知,但我想這沒有發生。我希望今天有人能幫助我。 – zigmens

+0

我不知道如果我需要使用和HTML腳本,這樣我可以使用HTML標籤樣式文件。所以當我打開腳本編輯器時,我應該創建一個新的「html」文件(文件/新建/ HTML文件)。問題是我不知道該怎麼走這條路...... – zigmens

回答

0

您是否嘗試將按鍵的格式設置爲首選樣式?如果在文檔模板中格式化鍵(即keyScope),則替換該鍵的變量將保留鍵的格式。

//...trimmed previous code 
    // Get document template, copy it as a new temp doc, and save the docs id 
    var copyId = DocsList.getFileById(docTemplate) 
    .makeCopy(docName) 
    .getId(); 

    //Open the temporary document and set it to a variable 
    var copyDoc = DocumentApp.openById(copyId); 

    //Get the documents body section 
    var copyBody = copyDoc.getActiveSection(); 

    //Replace place holder keys, in our google doc template 
    copyBody.replaceText('keyline_item', line_item); 
    copyBody.replaceText('keyDescr', descr); 
    copyBody.replaceText('keyJobName', job_name); 

    copyDoc.saveAndClose(); 



} 

雖然這是我所知道的,唯一的答案回答了原來的問題,是作者正在尋找是在加入來自不同小區的兩個值的變量保存格式(粗體)的方式(用不同的格式)。據我所知,它是不可能以攜帶從電子表格文檔格式,不管變量的數目,因爲keyReplace對象僅由原始文本(或公式)的佔據靶細胞或範圍,其中.getValues () 用來。

如果我錯了這一點,我希望有人糾正我,但因爲提交兩個相鄰小區組合成一個單一的變量,那就是他正在尋找的答案,我認爲它仍然不會可以在模板中作爲單個keyObject替換來執行,因爲具有不同格式的兩個單元格將被合併到腳本中的單個對象中。我知道你可以獲得背景和前景色,但是你必須通過R1C1表示法獲得這些顏色。是否還有其他可從電子表格中捕獲的格式選項?無論哪種方式,我都會將其留給專業人士,因爲我從他的源文件中唯一可以看到的方式是完全重寫他的文檔模板和腳本,而這並不是作者的問題正在尋找。我將把上面的腳本留給那些可能想要在將來做類似事情的人。

+0

是的,這樣的作品,但問題是,我只想要一個變量,要大膽,而不是其他。我有2個變量(line_item和desc)我希望line_item以粗體打印到Google文檔。 – zigmens

+0

在您的模板中加粗keyLine_Item,但不加keyDesc。另外,當我下班回家時,我會看看模板和腳本,但在此期間嘗試一下。 – thoughtcrime

+0

我想你必須看到文檔,因爲......腳本駐留在電子表格中有2個變量(line_item,desc)。然後將line_item和desc放在一個變量textToDoc中。然後腳本通過用變量textToDoc替換keyJobScope來打印文檔。所以我沒有看到改變line_item變量的方法。如果我創建了keyLineItem和keyDesc而不是keyJobScope,那麼我如何將LineItem組合到Desc ... – zigmens

相關問題