使用 Apps 脚本和 Google 工作表将传入数据拆分为两个不同的工作表
Split Incoming Data in Into Two Different Sheets Using Apps Script and Google Sheets
我需要 Apps 脚本和 Google Sheet 方面的帮助。我不太了解编码和编程,但我正在尝试调整脚本。我有一个网站将变量发送到 Apps 脚本,然后在 Google Sheet 中发布。但我希望这些变量在两个不同的组中。我们称它们为数据1和数据2。数据1进入Sheet 1,数据2进入Sheet 2。目前,两个数据都在一个函数下发送和处理,即Sheet 1 和 Sheet 2 同时填充。此外,这两个数据都包含每行的时间戳。但是,如果没有数据 2,Sheet 2 仍会填充时间戳。但我只想要 Sheet 1 或 Sheet 2(另一个 sheet 中没有时间戳或任何其他内容),具体取决于网站发送的内容。
我试图将脚本拆分成两个函数,但最后只有一个起作用,也许是因为我使用了相同的函数名称?我试图重命名第二个函数,但它也没有用,可能是因为我可能违反了命名约定,或者 App Script 不允许每个脚本有两个 postData 的方式?如果空变量不是 Apps 脚本停止填充另一个 sheet 的有效因素,我是否需要使用条件,如果需要,如何使用?我不知道该去哪里。你能帮我吗?这是一个脚本:
function doPost(postData) {
let doc = SpreadsheetApp.openById(MY_SHEET_ID);
let sheet = doc.getSheetByName("Sheet 1");
let sheet2 = doc.getSheetByName("Sheet 2");
let parsedData = postData.parameter;
parsedData = JSON.parse(Object.keys(parsedData));
let userBlue = parsedData["Blue"]
let userPurple = parsedData["Purple"]
let userRed = parsedData["Red"]
let userOrange = parsedData["Orange"]
sheet.appendRow([new Date(), userBlue, userPurple]);
sheet2.appendRow([new Date(), userRed, userOrange]); return ContentService.createTextOutput("Success");
}
提前致谢
虽然我无法使用网站完全重现,但我相信条件语句可以在这里工作:
function myFunction() {
const MY_SHEET_ID = "1m9nLp5sgpignwB1ddddxxxxxxxxx8";
let doc = SpreadsheetApp.openById(MY_SHEET_ID);
let sheet = doc.getSheetByName("Sheet1");
let sheet2 = doc.getSheetByName("Sheet2");
var myOB = { "Blue": 'BlueBerries', "Purple": 'grapes', "Red": 'apple', "Orange": '' }
if(myOB.Blue != "" && myOB.Purple != ""){ //Use && if you want to make sure no data is posted if both variables are empty
sheet.appendRow([new Date(),myOB.Blue,myOB.Purple])
}if(myOB.Red != "" || myOB.Orange != ""){ //Use && if you want to make sure no data is posted if both variables are empty
sheet2.appendRow([new Date(),myOB.Red,myOB.Orange])
}else{
ContentService.createTextOutput("DataSet1 Empty - No changes made");
}
}
所以对于你的情况,你可以试试这个:
if (userBlue != "" && userPurple != "") {
sheet.appendRow([new Date(), userBlue, userPurple]);
ContentService.createTextOutput("Success");
}
else {
return ContentService.createTextOutput("Failed");
}
if (userRed != "" && userOrange != "") {
sheet2.appendRow([new Date(), userRed, userOrange]);
ContentService.createTextOutput("Success");
} else {
return ContentService.createTextOutput("Failed");
}
在上面,如果变量不为空,将对其进行评估,然后将数据添加到其各自的Sheet。
我需要 Apps 脚本和 Google Sheet 方面的帮助。我不太了解编码和编程,但我正在尝试调整脚本。我有一个网站将变量发送到 Apps 脚本,然后在 Google Sheet 中发布。但我希望这些变量在两个不同的组中。我们称它们为数据1和数据2。数据1进入Sheet 1,数据2进入Sheet 2。目前,两个数据都在一个函数下发送和处理,即Sheet 1 和 Sheet 2 同时填充。此外,这两个数据都包含每行的时间戳。但是,如果没有数据 2,Sheet 2 仍会填充时间戳。但我只想要 Sheet 1 或 Sheet 2(另一个 sheet 中没有时间戳或任何其他内容),具体取决于网站发送的内容。
我试图将脚本拆分成两个函数,但最后只有一个起作用,也许是因为我使用了相同的函数名称?我试图重命名第二个函数,但它也没有用,可能是因为我可能违反了命名约定,或者 App Script 不允许每个脚本有两个 postData 的方式?如果空变量不是 Apps 脚本停止填充另一个 sheet 的有效因素,我是否需要使用条件,如果需要,如何使用?我不知道该去哪里。你能帮我吗?这是一个脚本:
function doPost(postData) {
let doc = SpreadsheetApp.openById(MY_SHEET_ID);
let sheet = doc.getSheetByName("Sheet 1");
let sheet2 = doc.getSheetByName("Sheet 2");
let parsedData = postData.parameter;
parsedData = JSON.parse(Object.keys(parsedData));
let userBlue = parsedData["Blue"]
let userPurple = parsedData["Purple"]
let userRed = parsedData["Red"]
let userOrange = parsedData["Orange"]
sheet.appendRow([new Date(), userBlue, userPurple]);
sheet2.appendRow([new Date(), userRed, userOrange]); return ContentService.createTextOutput("Success");
}
提前致谢
虽然我无法使用网站完全重现,但我相信条件语句可以在这里工作:
function myFunction() {
const MY_SHEET_ID = "1m9nLp5sgpignwB1ddddxxxxxxxxx8";
let doc = SpreadsheetApp.openById(MY_SHEET_ID);
let sheet = doc.getSheetByName("Sheet1");
let sheet2 = doc.getSheetByName("Sheet2");
var myOB = { "Blue": 'BlueBerries', "Purple": 'grapes', "Red": 'apple', "Orange": '' }
if(myOB.Blue != "" && myOB.Purple != ""){ //Use && if you want to make sure no data is posted if both variables are empty
sheet.appendRow([new Date(),myOB.Blue,myOB.Purple])
}if(myOB.Red != "" || myOB.Orange != ""){ //Use && if you want to make sure no data is posted if both variables are empty
sheet2.appendRow([new Date(),myOB.Red,myOB.Orange])
}else{
ContentService.createTextOutput("DataSet1 Empty - No changes made");
}
}
所以对于你的情况,你可以试试这个:
if (userBlue != "" && userPurple != "") {
sheet.appendRow([new Date(), userBlue, userPurple]);
ContentService.createTextOutput("Success");
}
else {
return ContentService.createTextOutput("Failed");
}
if (userRed != "" && userOrange != "") {
sheet2.appendRow([new Date(), userRed, userOrange]);
ContentService.createTextOutput("Success");
} else {
return ContentService.createTextOutput("Failed");
}
在上面,如果变量不为空,将对其进行评估,然后将数据添加到其各自的Sheet。