2015-01-09 48 views
3

我試圖將YAML格式的內容轉換爲Google Spreadsheet。我接受有關如何完成我嘗試做不同的想法......將YAML(或類似的)轉換或導入Google電子表格(或CSV)

項目

FAQ內容

MY REQUIRED交付

一個谷歌電子表格,其中一列的問題和下一個的答案。

我的問題

我無需向指定格式的內容。這很愚蠢。我知道這很愚蠢,所以我們不要在這裏進入。

我不會將文本的段落寫入電子表格。我討厭那個。

我更喜歡在純文本編輯器中使用markdown(或類似的)編寫文本。 (對於以前的可交付成果,我已經能夠使用帶有拼湊腳本的降價處理器來處理其他一些問題......)

這裏是我想要寫入的格式一直):

Is this a frequently asked question?: 
    Yes. People frequently ask this question. 

What about this one?: 
    Not as much. People don't ask that question very frequently. 

Et cetera?: 
    And so forth. 

我的想法是通過某種YAML到CSV轉換器運行,但我找不到任何似乎工作。 (是的,我用Google搜索,沒有,沒有什麼顯示出來似乎工作。)

理想解決方案

的工具或諸如此類的東西相結合,讓我寫一個小腳本,所以我可以從去一步到達Google雲端硬盤電子表格。

確定解決方案

我不會介意的輸出是一個CSV文件或HTML表格,我不得不做一些複製和粘貼或東西。我也可以用稍微不同的標記格式。

值得注意

這兩個問題和答案都是英文內容,並使用一切正常標點符號。

失敗

我試圖在寫它,就好像它是在pandoc的pipe_tables格式的表格的第一件事試過,但我討厭它。

我也嘗試過yaml-to-csv轉換器http://codebeautify.org/yaml-to-json-xml-csv,但是如果yaml鍵有空格則會出錯。

最後,我試着運行一個sed命令將冒號和新行變成管道(或別的東西),這樣我就可以使用pandoc生成一個html表格。沒有任何關於這個的工作,我最終取代了所有的「r」字符,這真的很愚蠢......

爲什麼不只是複製和粘貼? (或 - 人起來,鍵入當電子表格)

我有一堆這些做的。

如果我可以拼湊一個腳本或一堆工具,讓我從一個單一的終端命令轉換和上傳,它會讓我感覺好多了。

TL;博士

我需要從一個純文本鍵值對格式進入一個谷歌電子表格的兩列,以儘可能少的步驟可能。

+1

你有沒有試着寫一個腳本解析YAML? – mgamba

+0

我的編碼技能是微薄的,所以我需要在什麼地方即使有這樣開始了一些指導。 –

+1

的好地方開始是[YAML w ebsite](http://www.yaml.org/)。從項目列表中,您可以選擇您最熟悉的語言,然後嘗試使用Google語言解析YAML的示例。 – mgamba

回答

1

我已經解決了可能90%的問題與一些紅寶石腳本。

require 'yaml' 
require 'rubypants' 

filename = ARGV[0] 

yml = YAML.load_file("./#{filename}.yml") 

open("#{filename}.html", 'w') do |f| 
    f << "<table>" 
    yml.each do |q, a| 
    q = RubyPants.new(q).to_html 
    a = RubyPants.new(a).to_html 
    f << "<tr><td>#{q}</td><td>#{a}</td></tr>" 
    end 
    f << "</table>" 
end 

這至少得到了一個基本的html表格,我可以將其複製並粘貼到Google Drive中。 我也在通過RubyPants處理問題和答案,這給了我一些我喜歡的降價功能。

由於我的問題的細節,我將添加一些html標題和樣式信息和一行以彈出在瀏覽器中打開的結果文檔,以便我可以快速複製粘貼。

我認爲我很好,除非有人知道以簡單的方式將結果表格導入Google文檔。 (是的,我知道有一個API。哎呀,如果我能想出如何使用它。

---- ---- UPDATE在 任何人的情況下是特別感興趣,這是我的最終版本。 它確實與上面相同,但添加了HTML文檔的其餘部分,一些樣式(以便我保持在我喜歡的顯示模式 - 黑色背景中),並在瀏覽器中打開該文件(該部分可能只適用於mac,是爲我好)。

require 'yaml' 
require 'rubypants' 

filename = ARGV[0] 


yml = YAML.load_file("./#{filename}.yml") 

open("#{filename}.html", 'w') do |f| 
    f << " 
    <!DOCTYPE html> 
    <html> 
    <head> 
    <style> 
    body {margin: 20px; font-family: Menlo, Consolas, Arial; color: white; background-color: #222222; } 
    table {border-collapse: collapse;} 
     table, td, th { border: 1px solid green; } 
     td {vertical-align: top; min-width: 500px; padding: 20px; font-size: 24px; line-height: 32px;} 
     .question { color: #dddddd;} 
    .answer { color: #efefef;} 
    h1 { color: #cccccc; } 
    </style></head><body><h1> #{filename}.html </h1><table>" 
    yml.each do |q, a| 
    q = RubyPants.new(q).to_html 
    a = RubyPants.new(a).to_html 
    f << "<tr><td class='question'>#{q}</td><td class='answer'>#{a}</td></tr>" 
    end 
    f << "</table></body></html>" 
end 

system("open", "#{filename}.html") 
相關問題