使用 cURL 在 Google Apps 脚本函数中添加数组作为参数
Add array as parameter in Google Apps Script function using cURL
我在 Google Apps 脚本中创建了一个函数,用于在 Google 云端硬盘中创建和管理多个项目(例如创建文件夹、新的 Doc 或 Xls 文件等)。重要的是我有 4 个 DOC 文档(或模板):MainDoc + 3 个额外的 Doc 文件。使用我的脚本,MainDoc 文件被复制并重命名 (step1
),然后在第二步中用 3 个附加文件的 ID 定义数组,这些文件将成为 added/combining 它们在 MainDoc 上的文本(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 命令不起作用。
谁能帮帮我?
非常感谢。
沃迪亚姆
我认为您的目标和现状如下。
- 您想使用 curl 命令将
["##Doc2ID##","##Doc3ID##","##Doc4ID##"]
到 mergeDocsID
之类的数组 GlobalWorkflow(ProjectID, mergeDocsID)
。
- 您已经确认,当为函数
GlobalWorkflow
提供正确的值时,脚本运行良好。
- 您已经能够 运行 使用 Google Apps 脚本的功能 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
。因此,在 Google Apps 脚本端,当上面修改的 curl 命令为 运行 并且选中 mergeDocsID[0]
时,返回 "##Doc2ID##"
。
参考:
我在 Google Apps 脚本中创建了一个函数,用于在 Google 云端硬盘中创建和管理多个项目(例如创建文件夹、新的 Doc 或 Xls 文件等)。重要的是我有 4 个 DOC 文档(或模板):MainDoc + 3 个额外的 Doc 文件。使用我的脚本,MainDoc 文件被复制并重命名 (step1
),然后在第二步中用 3 个附加文件的 ID 定义数组,这些文件将成为 added/combining 它们在 MainDoc 上的文本(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 个参数。此其他功能在其他
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 命令不起作用。
谁能帮帮我?
非常感谢。
沃迪亚姆
我认为您的目标和现状如下。
- 您想使用 curl 命令将
["##Doc2ID##","##Doc3ID##","##Doc4ID##"]
到mergeDocsID
之类的数组GlobalWorkflow(ProjectID, mergeDocsID)
。 - 您已经确认,当为函数
GlobalWorkflow
提供正确的值时,脚本运行良好。 - 您已经能够 运行 使用 Google Apps 脚本的功能 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
。因此,在 Google Apps 脚本端,当上面修改的 curl 命令为 运行 并且选中mergeDocsID[0]
时,返回"##Doc2ID##"
。