2017-10-18 79 views
0

我有一個谷歌文檔模板,我想用外部數據替換模板中的一些字符串,最好是通過cURL,因爲應該做更改的腳本是bash腳本。Google文檔:使用cURL搜索+替換外部數據

我有搜索和替換在谷歌應用程序腳本完成像一個下面,但我不知道如何調用腳本和取而代之的一些外部數據。

function myFunction() { 

var doc = DocumentApp.openById("DOCUMENT_ID"); 

    var body = DocumentApp.getActiveDocument().getBody(); 
    var client = { 
    name: 'Some name', 
    address: 'Some address' 
    }; 

    body.replaceText('{name}', client.name); 
    body.replaceText('{address}', client.address); 
} 

UPDATE:

我創建了下面的谷歌Apps腳本:

function doPost(e) { 
    var body = DocumentApp.openById("JYOfA_Uv5fxLFA84g11H9XsizHo3F7e1FvSs3EG1vvo").getBody(); 
    var client = new Function("return " + e.postData.contents)(); 
    body.replaceText('{name}', client.name); 
    body.replaceText('{address}', client.address); 
    return ContentService.createTextOutput("Done.") 
} 

我跑curl命令是:

curl -L -d '{"name":"hello","address":"world"}' 'https://script.google.com/macros/s/AKfycbxF_1gddelneCdWCsFcvqT1OgU2zqkjTKSEIulSQfXjfgx1rnY/exec' 

而且文檔google apps腳本調用基本上具有{name} a的信息nd {地址}。

cURL命令給我錯誤,找不到文件。

鏈接是可訪問的,因爲那裏沒有任何祕密。只測試東西。


更新2:

鏈接到測試腳本: https://script.google.com/a/macros/klarna.com/d/1Q668U_HVtv3T_vQG_39oVL7V5YkcHzYhHUVhR8_XlOmUMRoPf15jDILK/edit?uiv=2&mid=ACjPJvEnpQ77A1Mo4sw8Y5IOPH5Pxs-IxEp1BFpfJU4RsfGXA7HbiHIv23ug_Rw0Y0dPKpWGM_Bb5oVznOqQMeyBki_jQb_g_LafNNPrLM0twO1eyPil3oqR-TjbHA8JToQQk4kdT1eZkE0&splash=yes

鏈接到測試文檔: https://docs.google.com/document/d/1JYOfA_Uv5fxLFA84g11H9XsizHo3F7e1FvSs3EG1vvo/edit

+0

請您澄清一下問題。你想*通過類似cURL的函數從腳本中訪問你的外部數據源?或者,你是否試圖通過cURL從外部腳本中調用綁定的應用程序腳本? –

+0

我想從類似cURL的功能中傳遞外部數據,並將其傳遞給谷歌文檔:) – Kevin

回答

0

怎麼樣下面的示例?我想爲您的情況使用Web Apps的doPost()。爲了使用這個樣本,請確認以下流程。

流量:

  1. 準備谷歌文檔作爲一個樣本。請把{name}{address}放在那裏。
  2. 將示例腳本(doPost(e))複製並粘貼到腳本編輯器中。
  3. 部署Web應用程序
    • 在腳本編輯器
    • 發佈
      • 部署爲Web應用程序
        • 創建新的項目版本
        • 在執行應用程序爲,選擇「帳戶「
        • 誰有權訪問該應用,請選擇」任何人,甚至匿名「
        • 點擊 「部署」
        • 複製 「當前Web應用程序URL」
        • 單擊 「確定」
  4. 請把你的端點到樣品curl命令並運行它。

Current web app URL是curl命令的端點。 Web Apps的詳細信息是here當您修改腳本時,必須重新部署Web Apps作爲新版本。

示例腳本:

function doPost(e) { 
    var body = DocumentApp.openById("DOCUMENT_ID").getBody(); 
    var client = new Function("return " + e.postData.contents)(); 
    body.replaceText('{name}', client.name); 
    body.replaceText('{address}', client.address); 
    return ContentService.createTextOutput("Done.") 
} 

在Post方法,JSON數據可以被髮送。所以我用這個。 var client = new Function("return " + e.postData.contents)();用於將收到的字符串JSON數據轉換爲對象。

樣品curl命令:

curl -L -d '{name: "Some name", address: "Some address"}' 'https://script.google.com/macros/s/#####/exec' 

注:

這是一個簡單的示例。所以,當你使用這個,請修改這個到你的環境。

如果我誤解了你的問題,我很抱歉。

+0

對不起,回覆遲!它看起來像我想要的解決方案,雖然有些東西似乎不對,但我得到了「Google Drive - 無法找到該頁面」。我檢查了網址,它是正確的。將嘗試看看我做錯了什麼。 – Kevin

+0

@Kevin我認爲你的情況有2點。一個是在部署Web Apps之後,如果腳本被修改了,Web Apps必須作爲新版本重新部署。你可以看到如何從我的答案中部署它。另一個是最近,部署Web應用程序時,有時會返回此類錯誤。那時,我通過用腳本重新打開文檔來避免錯誤。我不知道你的情況對我來說是否一樣。但你可以試試嗎?如果這些不是解決方案,我很抱歉。那時,你可以在你的共享腳本中顯示你的整個腳本嗎? – Tanaike

+0

@Kevin然後,我對你的情況有個疑問。你的錯誤是來自curl的迴應嗎? – Tanaike