我在Google Apps Script中创建了一个函数,用于在Google Drive中创建和管理多个项目(例如创建文件夹、新文档或Xls文件等(。重要的是我有4个Doc文档(或模板(:MainDoc+3个额外的文档文件。在我的脚本中,MainDoc文件被复制并重命名(step1
(,然后在第二步中,用将在MainDoc上添加/组合其文本的3个附加文件的ID定义数组(step2
(。为了便于理解,我展示了我的函数的基本结构:
1 function GlobalWorkflow(ProjectID, mergeDocsID) {
2 ...
3 //### STEP1 ###//
4 var newFolderID = parentFolder.createFolder(date + '_Report').getId();
5 var newFolder = DriveApp.getFolderById(newFolderID);
6 var docTemplateID = "##MainDocID##";
7 var getDOCTemplate = DriveApp.getFileById(docTemplateID);
8 var MainDocID = getDOCTemplate.makeCopy(date + '_Report', newFolder).getId();
9 ...
10 //### STEP2 ###//
11 //Input: documentIDs to merge
12 //var mergeDocsID = "##Doc2ID##|##Doc3ID##|##Doc4ID##"
13 var mergeArray = mergeDocsID.split('|');
14 for (var i = 0; i < mergeArray.length; i++) {
15 mergeGoogleDocs(MainDocID, mergeArray[i]);
16 }
17 ...
18 }
第15行调用另一个函数"mergeGoogleDocs
",该函数带有2个参数。另一个功能在这篇文章中有描述,多亏了@Tanaike,我使用以下命令从cURL运行了这个功能:
curl -X POST
-H 'Authorization: Bearer ### access token ###'
-H "Content-Type: application/json"
-d '{"function": "##function name##", "parameters": ["##docID1##", "##docID2##"], devMode: true}'
"https://script.googleapis.com/v1/scripts/### script ID ###:run"
我现在遇到的问题是,我想运行"GlobalWorkflow
"函数,但其中一个参数(mergeDocsID(是要组合的文档文件ID的数组,我可以从cURL中运行整个脚本,除了那部分(Step2
(,尽管响应不会给我错误。
这是我使用的命令:
curl -X POST
-H 'Authorization: Bearer ### access token ###'
-H "Content-Type: application/json"
-d '{"function": "##function name##", "parameters": ["##MainDocID##", "##Doc2ID##|##Doc3ID##|##Doc4ID##"], devMode: true}'
"https://script.googleapis.com/v1/scripts/### script ID ###:run"
如何在cURL命令中包含数组以使"mergeGoogleDocs
"函数正常工作?。
PS。如果我取消对第12行的注释并从GAS运行函数,那么一切都会完美地工作,并创建了包含4个文件的组合文档。不起作用的是cURL命令。
有人能帮我吗?。
非常感谢。
Wardiam
我相信你的目标和目前的情况如下。
- 您想要使用curl命令给
GlobalWorkflow(ProjectID, mergeDocsID)
的["##Doc2ID##","##Doc3ID##","##Doc4ID##"]
到mergeDocsID
这样的数组 - 您已经确认,当为函数
GlobalWorkflow
提供正确的值时,脚本运行良好 - 您已经能够使用Google应用程序脚本API运行函数
为了给出类似["##Doc2ID##","##Doc3ID##","##Doc4ID##"]
的数组,请按如下方式修改curl命令。
发件人:
curl -X POST
-H 'Authorization: Bearer ### access token ###'
-H "Content-Type: application/json"
-d '{"function": "##function name##", "parameters": ["##MainDocID##", "##Doc2ID##|##Doc3ID##|##Doc4ID##"], devMode: true}'
"https://script.googleapis.com/v1/scripts/### script ID ###:run"
收件人:
curl -X POST
-H 'Authorization: Bearer ### access token ###'
-H "Content-Type: application/json"
-d '{"function": "##function name##", "parameters": ["##MainDocID##", ["##Doc2ID##","##Doc3ID##","##Doc4ID##"]], devMode: true}'
"https://script.googleapis.com/v1/scripts/### script ID ###:run"
- 通过以上修改,给出了
["##Doc2ID##","##Doc3ID##","##Doc4ID##"]
的阵列为GlobalWorkflow(ProjectID, mergeDocsID)
的mergeDocsID
。所以在GoogleAppsScript端,当运行上述修改后的curl命令并检查mergeDocsID[0]
时,返回"##Doc2ID##"
参考:
- 方法:scripts.run