javascript - 如何在 Google Apps 脚本中查找和替换值?
问题描述
我正在 Google 表格中构建一个简单的数据输入表单。用户完成特定字段(在工作表 A 中),然后单击提交按钮。然后将数据输入到另一张表(表 B)中。
我正在寻找一个脚本解决方案,它将从数据输入表单(表 A)中获取值,执行查找和替换(在脚本中),然后将替换的值放在表 B 中。一旦将数据输入表B,Sheet A 中的值将自动清空。
例子:
- 用户输入的值为 PASS。在数据表中输入的值为 1。
- 用户输入的值为 FAIL。在数据表中输入的值为 0。
链接到 Google 表格: https ://docs.google.com/spreadsheets/d/10c1EX27WbINQOjN0UyE778gl8LguKp7MRKwQdaw0mu4/edit?usp=sharing
脚本:
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);
}
任何人都可以帮忙吗?
解决方案
解释:
用户输入的值为 PASS。在数据表中输入的值为 1。
用户输入的值为 FAIL。在数据表中输入的值为 0。
由于您已经有了这些值,您可以使用以下三元运算符实现上述转换:
var f_values = values.map(val=>val=='Pass'?1:val=='Fail'?0:val);
后者将遍历values
数组并将每个值转换为:1 if val=='Pass'
、0 if val=='Fail'
或保持原样,如果其他两种情况评估为假。
解决方案:
这就是您要查找的内容:
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]);
}
参考:
推荐阅读
- javascript - 如何使用不同的 URL 调用 2 个不同的模块。服务器继续发送第二个请求的第一个模块结果
- json - 在 Spark 中解析嵌套的 JSON 列
- azure - HDinsights 中的 Hive 问题
- php - PHP - 检查帖子是否存在,然后使用 getById 函数和 addItem 方法将项目添加到购物车
- java - Android Studio AddView TableLayout,必须removeChild 错误?
- amazon-web-services - 无法通过 ec2 上托管的 dns 访问反应应用程序
- flutter - 颤动动画中的性能问题
- android - Android:如何使 AnimatedImageDrawable 填充 ImageView
- arrays - 在netbeans中,默认情况下数组是按值排序的,我应该如何将其更改为按索引
- angularjs - angularjs html组件配置