[英]How to Find & Replace Value in Google Apps Script?
I'm building a simple data entry form in Google Sheets.我正在 Google 表格中构建一个简单的数据输入表单。 The user completes specific fields (in Sheet A) and then clicks the Submit button.用户填写特定字段(在工作表 A 中),然后单击提交按钮。 The data is then entered into another sheet (Sheet B).然后将数据输入到另一个工作表(工作表 B)中。
I'm looking for a scripting solution that will take the value from the data entry form (Sheet A), do a find and replace (In the script), then place the replaced value in Sheet B. Once the data is entered into Sheet B, the values in Sheet A will be nulled automatically.我正在寻找一个脚本解决方案,它将从数据输入表单(表 A)中获取值,执行查找和替换(在脚本中),然后将替换的值放在表 B 中。一旦将数据输入到表中B,表 A 中的值将自动清零。
Examples:例子:
Link to Google Sheet: https://docs.google.com/spreadsheets/d/10c1EX27WbINQOjN0UyE778gl8LguKp7MRKwQdaw0mu4/edit?usp=sharing谷歌表格链接: https : //docs.google.com/spreadsheets/d/10c1EX27WbINQOjN0UyE778gl8LguKp7MRKwQdaw0mu4/edit?usp=sharing
Script:脚本:
function submitData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Form"); //Form Sheet
var datasheet = ss.getSheetByName("Form Data"); //Data Sheet
//Input Values
var values = [[formSS.getRange("L5").getValue(),
formSS.getRange("D18").getValue(),
formSS.getRange("D21").getValue(),
formSS.getRange("R18").getValue(),
formSS.getRange("R21").getValue(),
formSS.getRange("AF18").getValue(),
formSS.getRange("AF21").getValue(),
formSS.getRange("D33").getValue(),
formSS.getRange("D36").getValue(),
formSS.getRange("R33").getValue(),
formSS.getRange("R36").getValue(),
formSS.getRange("AF33").getValue(),
formSS.getRange("AF36").getValue(),
formSS.getRange("D48").getValue(),
formSS.getRange("D51").getValue(),
formSS.getRange("R48").getValue(),
formSS.getRange("R51").getValue(),
formSS.getRange("AF48").getValue(),
formSS.getRange("AF51").getValue(),
formSS.getRange("D63").getValue(),
formSS.getRange("D66").getValue(),
formSS.getRange("R63").getValue(),
formSS.getRange("R66").getValue(),
formSS.getRange("AF63").getValue(),
formSS.getRange("AF66").getValue()]];
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 25).setValues(values);
}
Can anyone help?任何人都可以帮忙吗?
User entered value is PASS.用户输入的值为 PASS。 Value entered on data form is 1.在数据表单上输入的值为 1。
User entered value is FAIL.用户输入的值为 FAIL。 Value entered on data form is 0.在数据表单上输入的值为 0。
Since you already have the values, you can achieve the above transformation using the following ternary operator:由于您已经有了这些值,您可以使用以下三元运算符实现上述转换:
var f_values = values.map(val=>val=='Pass'?1:val=='Fail'?0:val);
The latter will iterate over the values
array and it will transform every value to: 1 if val=='Pass'
, 0 if val=='Fail'
or keep as is if the other two cases evaluate to false.后者将遍历values
阵列,它将每一个值变换到:1 if val=='Pass'
,0 if val=='Fail'
或保持如如果其它两种情况评估为假。
This is what you are looking for:这就是你要找的:
function submitData() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Form"); //Form Sheet
var datasheet = ss.getSheetByName("Form Data"); //Data Sheet
var values = [formSS.getRange("L5").getValue(),
formSS.getRange("D18").getValue(),
formSS.getRange("D21").getValue(),
formSS.getRange("R18").getValue(),
formSS.getRange("R21").getValue(),
formSS.getRange("AF18").getValue(),
formSS.getRange("AF21").getValue(),
formSS.getRange("D33").getValue(),
formSS.getRange("D36").getValue(),
formSS.getRange("R33").getValue(),
formSS.getRange("R36").getValue(),
formSS.getRange("AF33").getValue(),
formSS.getRange("AF36").getValue(),
formSS.getRange("D48").getValue(),
formSS.getRange("D51").getValue(),
formSS.getRange("R48").getValue(),
formSS.getRange("R51").getValue(),
formSS.getRange("AF48").getValue(),
formSS.getRange("AF51").getValue(),
formSS.getRange("D63").getValue(),
formSS.getRange("D66").getValue(),
formSS.getRange("R63").getValue(),
formSS.getRange("R66").getValue(),
formSS.getRange("AF63").getValue(),
formSS.getRange("AF66").getValue()];
var f_values = values.map(val=>val=='Pass'?1:val=='Fail'?0:val);
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 25).setValues([f_values]);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.