【发布时间】:2021-04-10 19:17:03
【问题描述】:
如果这个问题太简单,我深表歉意,但我是使用 cURL 的新手。我在 Google App Script 中创建了一个函数来合并来自两个 Google Docs 的文本。函数是这样的:
function mergeGoogleDocs(doc1, doc2) {
var BaseDoc = DocumentApp.openById(doc1);
var body = BaseDoc.getActiveSection();
var otherBody = DocumentApp.openById(doc2).getActiveSection();
var totalElements = otherBody.getNumChildren();
for( var j = 0; j < totalElements; ++j ) {
var element = otherBody.getChild(j).copy();
var type = element.getType();
if( type == DocumentApp.ElementType.PARAGRAPH )
{
body.appendParagraph(element);
}
else if( type == DocumentApp.ElementType.TABLE )
{
body.appendTable(element);
}
else if( type == DocumentApp.ElementType.LIST_ITEM )
{
body.appendListItem(element);
}
else
{
throw new Error("Error de Formato: "+type);
}
}
}
我已经测试了脚本,如果我输入两个文档 ID,它就可以完美运行。我希望能够使用 cURL 从 Google 外部调用此函数。为此,我启用了所有必要的(凭据、范围权限、项目编号并将其实现为可执行 API)。我一直在寻找一种使用 cURL 运行该函数的方法,并且只在这个 post 中找到了这个:
curl -X POST -L \
-H "Authorization: Bearer ### access token ###" \
-H "Content-Type: application/json" \
-d "{function: '### function name ###',devMode: true}" \
"https://script.googleapis.com/v1/scripts/### script ID ###:run"
我需要包含两个document_IDs 作为参数,因此根据上一篇文章中的信息我创建了以下序列:
curl -X POST -L \
-H 'Authorization: Bearer ##access token##' \
-H "Content-Type: application/json" \
-d '{"function": "##function name##", "parameters": {"doc1":"##docID1##,"doc2":"##docID2##"}, devMode: true}' \
"https://script.googleapis.com/v1/scripts/### script ID ###:run"
但是当我运行该序列时,我收到以下错误消息:
{
"done": true,
"error": {
"code": 3,
"message": "ScriptError",
"details": [
{
"@type": "type.googleapis.com/google.apps.script.v1.ExecutionError",
"scriptStackTraceElements": [
{
"function": "##function name##",
"lineNumber": 3
}
],
"errorMessage": "Exception: Document is missing (perhaps it was deleted, or you don't have read access?)",
"errorType": "ScriptError"
}
]
}
}
有人可以帮我正确放置序列以使应用脚本正常工作吗?
非常感谢。
沃迪亚姆
【问题讨论】:
-
首先,很抱歉我的回答对您的情况没有用处。我有一个问题要问你的问题。不幸的是,来自
I don't know if it will work,我无法理解您当前的问题。我为我糟糕的英语水平道歉。我能问一下您当前问题的详细信息吗? -
我正在 Xojo 中开发一个 Web 应用程序,并使用 libcURL 与 Google Drive 进行通信。我有一个文件夹(“模板”),其中包含几个用作模板的 Google 文档。根据用户的选择,我需要合并其中的 2 个文档。由于我无法直接从 cURL 执行此任务,因此我想在 App Script 中使用此函数来组合文档,但我需要使用 cURL 从 Xojo 调用该函数,因此我正在寻求帮助。
-
感谢您回复并添加更多信息。从您更新的问题中,我提出了一个答案。你能确认一下吗?如果这不是您期望的方向,我深表歉意。
-
非常感谢 Tanaike,这正是我所需要的。最后我使用了你的第一个 cURL 命令(修改后的 cURL)