vue.js - 如何将数组对象参数从 vue 网站传递给 google appscript 以设置 google 电子表格列值
问题描述
首先,我通过 vue 创建一个网站,并将参数传递给我的 google appscript
vue函数
var appurl = "my google appscript url"
this.$http.get(appurl, {
params: {
settingLink: this.settingLink,
albumLink: this.albumLink,
stepControl: this.stepControl,
nav: this.navSetting,
}
}).then(response => {
console.log(response);
})
我将参数发送到谷歌 appscript
我的谷歌应用脚本
function doGet(e) {
var params = e.parameter;
var settingLink = params.settingLink;
var albumLink = params.albumLink;
var stepControl = params.stepControl;
var nav = params.nav;
var SpreadSheet = SpreadsheetApp.openByUrl(settingLink);
var SheetName = SpreadSheet.getSheetByName("gameSetting");
SheetName.getRange("D2").setValue(stepControl);
SheetName.getRange("E2").setValue(albumLink);
SheetName.getRange("F2").setValue(nav[0].style);
SheetName.getRange("G2").setValue(nav[1].style);
SheetName.getRange("H2").setValue(nav[2].style);
}
参数 albumLink 和 stepControl 是字符串,所以我成功将它推送到我的电子表格(图 1)
但 nav 是一个数组对象,如(在 vue 数据中)
nav=[
{style:"red",content:"test"},
{style:"blue",content:"test"},
{style:"green",content:"test"},
]
我怎么能让电子表格 F2 为“红色”,G2 为“蓝色”,H2 为“绿色”
图 1 在此处输入图像描述
解决方案
通过检查 的输出JSON.stringify(e)
,似乎对象的每个属性都变成了不同的参数,并以如下方式接收:
{
"queryString": "settingLink=settingLinkTest&albumLink=albumLinkTest&stepControl=stepControlTest&nav%5B0%5D%5Bstyle%5D=red&nav%5B0%5D%5Bcontent%5D=test&nav%5B1%5D%5Bstyle%5D=blue&nav%5B1%5D%5Bcontent%5D=test&nav%5B2%5D%5Bstyle%5D=green&nav%5B2%5D%5Bcontent%5D=test",
"contextPath": "",
"parameters": {
"nav[1][style]": [
"blue"
],
"nav[1][content]": [
"test"
],
"albumLink": [
"albumLinkTest"
],
"nav[2][style]": [
"green"
],
"settingLink": [
"settingLinkTest"
],
"nav[2][content]": [
"test"
],
"nav[0][style]": [
"red"
],
"stepControl": [
"stepControlTest"
],
"nav[0][content]": [
"test"
]
},
"contentLength": -1,
"parameter": {
"nav[2][content]": "test",
"nav[1][content]": "test",
"albumLink": "albumLinkTest",
"settingLink": "settingLinkTest",
"nav[0][style]": "red",
"stepControl": "stepControlTest",
"nav[0][content]": "test",
"nav[1][style]": "blue",
"nav[2][style]": "green"
}
}
由于特定导航的索引及其属性成为参数名称,因此您可以通过将 doGet() 更改为:
SheetName.getRange("F2").setValue(params["nav[0][style]"]);
SheetName.getRange("G2").setValue(params["nav[1][style]"]);
SheetName.getRange("H2").setValue(params["nav[2][style]"]);
或者,正如问题评论中所建议的,您可以在发送导航对象时对其进行字符串化:
this.$http.get(appurl, {
params: {
settingLink: settingLink,
albumLink: albumLink,
stepControl: stepControl,
nav: JSON.stringify(nav)
}
}).then(response => {
console.log(response);
})
然后在您收到它时进行解析以按预期使用:
var nav = JSON.parse(params.nav);
SheetName.getRange("F2").setValue(nav[0].style);
SheetName.getRange("G2").setValue(nav[1].style);
SheetName.getRange("H2").setValue(nav[2].style);
推荐阅读
- python - 为什么我在 Python Pandas dtype float64 上出现错误?
- ssl-certificate - 配置 SSL 证书时产生 vsftpd 服务器错误的原因是什么?
- firebase - 如何在 Firebase 函数中使用 FCM
- python - 您对使用 MobileNet 进行自定义尺寸图像有什么想法吗?
- haskell - 如何否定列表中除特定数字之外的每个数字?哈斯克尔
- java - 将所有背景颜色放入此 XML - Android
- python - python中的变量没有被更新
- haskell - 递归函数中的 Haskell 无限循环
- visual-studio-code - VsCode 版本的 Spring Tools 和 Eclipse 版本的功能一样吗?
- algorithm - 具有影响寻路的特殊节点的图寻路算法