根据 POST 参数 App Script 更新 Cell
Update Cell based on POST parameter App Script
我正在向 URL
发出 POST 请求
https://script.google.com/macros/s/{id}/exec?row=5
请求为application/json
,请求正文为{"json": true}
这是由发布为网络应用程序(任何人,匿名)的应用程序脚本接收的
function doPost(e){
var ss=SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var params=JSON.stringify(e.postData.contents);
params=JSON.parse(params);
var myObj=JSON.parse(e.postData.contents);
var row=myObj.row;
var ss = SpreadsheetApp.getActivesheet();
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
}
我正在尝试传递一个我想修改的行号作为参数。我想用固定值“CONTACTED”更新与行号、第 5 列对应的单元格。它不工作,尽管使用 console.log
,但在 Stackdriver 日志记录下我看不到日志
我相信你的目标如下。
- 您想使用
https://script.google.com/macros/s/{id}/exec?row=5
. 等查询参数来提供 row
的值
- 根据您的脚本,
- 您想把
JSON.stringify(e)
的值放到getRange(row,4)
的sheet INGRESOSDEDINERO
of Spreadsheet 16XSfRDLY1RdrUxHu...
的范围内.
- 您想将
CONTACTED
的值放入活动 Spreadsheet. 的第一个选项卡中 getRange(row,4)
的范围内
为了通过修改你的脚本达到你的目的,我提出如下修改。
修改点:
- 我认为您正在尝试通过请求正文检索作为查询参数请求的值。我认为这就是您遇到问题的原因。
- 当
row
由 https://script.google.com/macros/s/{id}/exec?row=5
等查询参数给出时,您可以使用 e.parameter.row
从 doPost(e)
的 e
检索 row
.
- 例如,当您使用脚本请求 Web 应用程序时,当返回一个值
return ContentService.createTextOutput("ok")
时,不会发生错误。
- 如果要使用
getActiveSheet()
,请将getActivesheet
修改为getActiveSheet()
。
模式 1:
在此模式中,row
像您的端点一样用作查询参数。
修改后的脚本:
function doPost(e){
var ss = SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var row = e.parameter.row; // <--- Modified
var ss = SpreadsheetApp.getActiveSheet(); // <--- Modified
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
return ContentService.createTextOutput("ok"); // <--- Added
}
测试
当您使用 curl 命令测试以上 Web 应用程序时,您可以使用以下 curl 命令。
curl -L -d "key=value" "https://script.google.com/macros/s/###/exec?row=5"
-d "key=value"
用于请求POST方法以doPost
为虚拟。
模式二:
在此模式中,row
像您的脚本一样用作请求正文。
修改脚本 2:
function doPost(e){
var ss = SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var myObj=JSON.parse(e.postData.contents);
var row=myObj.row;
var ss = SpreadsheetApp.getActiveSheet(); // <--- Modified
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
return ContentService.createTextOutput("ok"); // <--- Added
}
测试
当您使用 curl 命令测试以上 Web 应用程序时,您可以使用以下 curl 命令。
curl -L -d "{\"row\": 5}" "https://script.google.com/macros/s/###/exec"
注:
- 当您修改Web Apps的脚本时,请重新部署Web Apps为新版本。由此,最新的脚本被反映到Web Apps。请注意这一点。
参考文献:
我正在向 URL
发出 POST 请求https://script.google.com/macros/s/{id}/exec?row=5
请求为application/json
,请求正文为{"json": true}
这是由发布为网络应用程序(任何人,匿名)的应用程序脚本接收的
function doPost(e){
var ss=SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var params=JSON.stringify(e.postData.contents);
params=JSON.parse(params);
var myObj=JSON.parse(e.postData.contents);
var row=myObj.row;
var ss = SpreadsheetApp.getActivesheet();
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
}
我正在尝试传递一个我想修改的行号作为参数。我想用固定值“CONTACTED”更新与行号、第 5 列对应的单元格。它不工作,尽管使用 console.log
我相信你的目标如下。
- 您想使用
https://script.google.com/macros/s/{id}/exec?row=5
. 等查询参数来提供 - 根据您的脚本,
- 您想把
JSON.stringify(e)
的值放到getRange(row,4)
的sheetINGRESOSDEDINERO
of Spreadsheet16XSfRDLY1RdrUxHu...
的范围内. - 您想将
CONTACTED
的值放入活动 Spreadsheet. 的第一个选项卡中
getRange(row,4)
的范围内 - 您想把
row
的值
为了通过修改你的脚本达到你的目的,我提出如下修改。
修改点:
- 我认为您正在尝试通过请求正文检索作为查询参数请求的值。我认为这就是您遇到问题的原因。
- 当
row
由https://script.google.com/macros/s/{id}/exec?row=5
等查询参数给出时,您可以使用e.parameter.row
从doPost(e)
的e
检索row
. - 例如,当您使用脚本请求 Web 应用程序时,当返回一个值
return ContentService.createTextOutput("ok")
时,不会发生错误。 - 如果要使用
getActiveSheet()
,请将getActivesheet
修改为getActiveSheet()
。
模式 1:
在此模式中,row
像您的端点一样用作查询参数。
修改后的脚本:
function doPost(e){
var ss = SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var row = e.parameter.row; // <--- Modified
var ss = SpreadsheetApp.getActiveSheet(); // <--- Modified
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
return ContentService.createTextOutput("ok"); // <--- Added
}
测试
当您使用 curl 命令测试以上 Web 应用程序时,您可以使用以下 curl 命令。
curl -L -d "key=value" "https://script.google.com/macros/s/###/exec?row=5"
-d "key=value"
用于请求POST方法以doPost
为虚拟。
模式二:
在此模式中,row
像您的脚本一样用作请求正文。
修改脚本 2:
function doPost(e){
var ss = SpreadsheetApp.openById("16XSfRDLY1RdrUxHujbRCPX6eSh4CqP7ES2kVVDCGgoI");
var sheet = ss.getSheetByName("INGRESOSDEDINERO");
var myObj=JSON.parse(e.postData.contents);
var row=myObj.row;
var ss = SpreadsheetApp.getActiveSheet(); // <--- Modified
ss.getRange(row,4).setValue("CONTACTED");
console.log("Post function called");
if (typeof e !== 'undefined')
console.log(e.parameter);
sheet.getRange(row,4).setValue(JSON.stringify(e));
return ContentService.createTextOutput("ok"); // <--- Added
}
测试
当您使用 curl 命令测试以上 Web 应用程序时,您可以使用以下 curl 命令。
curl -L -d "{\"row\": 5}" "https://script.google.com/macros/s/###/exec"
注:
- 当您修改Web Apps的脚本时,请重新部署Web Apps为新版本。由此,最新的脚本被反映到Web Apps。请注意这一点。