Javascript 如何从JS或node.JS发布?
我想从我的JS或node.JS文件执行以下Javascript 如何从JS或node.JS发布?,javascript,node.js,google-apps-script,httprequest,Javascript,Node.js,Google Apps Script,Httprequest,我想从我的JS或node.JS文件执行以下POST命令 terminal.zsh 我可以使用以下代码从node.js文件成功地编写.csv文件 node.js 我尝试了以下方法,但没有成功。我希望看到数据击中我的API,但我没有看到任何数据 node.js 我做错了什么? 您希望使用Node.js将CSV文件上载到Google Apps脚本的Web Apps。 从https://script.google.com/macros/s/#/exec,我可以理解您正在使用Google Apps脚本的
POST
命令
terminal.zsh
我可以使用以下代码从node.js文件成功地编写.csv文件
node.js
我尝试了以下方法,但没有成功。我希望看到数据击中我的API,但我没有看到任何数据
node.js
我做错了什么?- 您希望使用Node.js将CSV文件上载到Google Apps脚本的Web Apps。
- 从
,我可以理解您正在使用Google Apps脚本的Web应用程序https://script.google.com/macros/s/#/exec
- 从
multipart/form data
或multipart/related
,也无法解析接收到的数据。因此,在本例中,作为一种解决方法,CSV数据作为数据发送
修改脚本:
修改Node.js脚本时,下面的修改如何?使用此脚本之前,请设置Web应用的URL和文件名
const fs = require("fs");
const request = require("request");
request(
{
url: "https://script.google.com/macros/s/###/exec", // Please set this.
method: "POST",
body: fs.createReadStream("./sample.csv"), // Please set this.
followAllRedirects: true
},
function(err, res, body) {
if (err) {
console.log(err);
return;
}
// console.log(res);
console.log(body);
}
);
- 在这个修改后的脚本中,它假设CSV文件作为示例上载。示例CSV文件名为
sample.CSV
- 运行此脚本时,CSV文件将上载到Web应用程序
是重定向。默认值为followAllRedirects
。因此设置了false
。这是访问Google应用程序脚本的Web应用程序所必需的true
- 如果您想上传像
,请将data={key1:“value1”,key2:“value2”}
修改为body:fs.createReadStream(“./sample.csv”),
。通过这种方式,可以在body:JSON.stringify(data),
中使用doPost(e)
检索和解析值JSON.parse(e.postData.contents)
- 通过上面的脚本,当运行sample Node.js脚本时,
被上传,上传的数据被sample.csv
解析。然后,将解析的值放入活动电子表格的工作表Utilities.parseCsv()
Sheet1
- 如果分隔符不是
,请将其设置为,
parseCsv(csv,delimiter)
sample.CSV
)使用上述Node.js脚本上载到上述Web应用程序时
a1,b1,c1,d1,e1
a2,b2,c2,d2,e2
a3,b3,c3,d3,e3
a4,b4,c4,d4,e4
a5,b5,c5,d5,e5
a6,b6,c6,d6,e6
a7,b7,c7,d7,e7
a8,b8,c8,d8,e8
a9,b9,c9,d9,e9
a10,b10,c10,d10,e10
可以检索以下事件对象。因此,CSV数据可以由Utilities.parseCsv(e.postData.contents)
解析
注:
- 修改Web应用的脚本时,请重新部署Web应用。这样,最新的脚本就会反映到Web应用程序中
- 您希望使用Node.js将CSV文件上载到Google Apps脚本的Web Apps。
- 从
,我可以理解您正在使用Google Apps脚本的Web应用程序https://script.google.com/macros/s/#/exec
- 从
multipart/form data
或multipart/related
,也无法解析接收到的数据。因此,在本例中,作为一种解决方法,CSV数据作为数据发送
修改脚本:
修改Node.js脚本时,下面的修改如何?使用此脚本之前,请设置Web应用的URL和文件名
const fs = require("fs");
const request = require("request");
request(
{
url: "https://script.google.com/macros/s/###/exec", // Please set this.
method: "POST",
body: fs.createReadStream("./sample.csv"), // Please set this.
followAllRedirects: true
},
function(err, res, body) {
if (err) {
console.log(err);
return;
}
// console.log(res);
console.log(body);
}
);
- 在这个修改后的脚本中,它假设CSV文件作为示例上载。示例CSV文件名为
sample.CSV
- 运行此脚本时,CSV文件将上载到Web应用程序
是重定向。默认值为followAllRedirects
。因此设置了false
。这是访问Google应用程序脚本的Web应用程序所必需的true
- 如果您想上传像
,请将data={key1:“value1”,key2:“value2”}
修改为body:fs.createReadStream(“./sample.csv”),
。通过这种方式,可以在body:JSON.stringify(data),
中使用doPost(e)
检索和解析值JSON.parse(e.postData.contents)
- 通过上面的脚本,当运行sample Node.js脚本时,
被上传,上传的数据被sample.csv
解析。然后,将解析的值放入活动电子表格的工作表Utilities.parseCsv()
Sheet1
- 如果分隔符不是
,请将其设置为,
parseCsv(csv,delimiter)
sample.CSV
)使用上述Node.js脚本上载到上述Web应用程序时
a1,b1,c1,d1,e1
a2,b2,c2,d2,e2
a3,b3,c3,d3,e3
a4,b4,c4,d4,e4
a5,b5,c5,d5,e5
a6,b6,c6,d6,e6
a7,b7,c7,d7,e7
a8,b8,c8,d8,e8
a9,b9,c9,d9,e9
a10,b10,c10,d10,e10
可以检索以下事件对象。因此,CSV数据可以由Utilities.parseCsv(e.postData.contents)
解析
注:
- 修改Web应用的脚本时,请重新部署Web应用。这样,最新的脚本就会反映到Web应用程序中
如果我误解了您的问题,并且这不是您想要的方向,我很抱歉。使用
-v
标志运行curl
命令以查看请求标题。仅供参考,它没有创建多部分请求。当我执行该命令时,它会发送一个常规的内容类型:application/x-www-form-urlencoded
请求,请求主体为CSV数据运行带有-v
标志的curl
命令以查看请求头。仅供参考,它不是在创建多路径
function doPost(e) {
var csv = Utilities.parseCsv(e.postData.contents);
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
sheet.appendRow([JSON.stringify(e)]);
sheet.getRange(sheet.getLastRow() + 1, 1, csv.length, csv[0].length).setValues(csv);
return ContentService.createTextOutput("ok");
}
a1,b1,c1,d1,e1
a2,b2,c2,d2,e2
a3,b3,c3,d3,e3
a4,b4,c4,d4,e4
a5,b5,c5,d5,e5
a6,b6,c6,d6,e6
a7,b7,c7,d7,e7
a8,b8,c8,d8,e8
a9,b9,c9,d9,e9
a10,b10,c10,d10,e10
{
"parameter": {},
"contextPath": "",
"contentLength": 165,
"queryString": "",
"parameters": {},
"postData": {
"type": "text/csv",
"length": 165,
"contents": "a1,b1,c1,d1,e1\r\na2,b2,c2,d2,e2\r\na3,b3,c3,d3,e3\r\na4,b4,c4,d4,e4\r\na5,b5,c5,d5,e5\r\na6,b6,c6,d6,e6\r\na7,b7,c7,d7,e7\r\na8,b8,c8,d8,e8\r\na9,b9,c9,d9,e9\r\na10,b10,c10,d10,e10\r\n",
"name": "postData"
}
}