2017-10-18 77 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