【发布时间】:2022-01-06 02:33:47
【问题描述】:
我有两个名为“数据库”和“表单”的电子表格。
如果“数据库”工作表中的“日期”列包含使用 Apps 脚本的“表单”工作表的“C2”单元格匹配值,我想删除这些行。这是我所拥有的:
function submitFormData() {
const sheet = SpreadsheetApp.getActiveSpreadsheet();
const ui=SpreadsheetApp.getUi();
const form = sheet.getSheetByName("Form");
const database = sheet.getSheetByName("Database");
const date = form.getRange("C2").getValue(); // Get date value from cell "C2" of 'Form' sheet
const databaseDates = database.getRange("A2:A").getValues(); // Get all values in 'Date' column of 'Database' sheet
const blankRow = database.getLastRow()+1;
const lastRow = database.getLastRow();
// Loop below checks for and deletes rows that meet the stated condition :
for ( var i = 2 ; i <= lastRow ; i++){
if(databaseDates[i] == date){
database.deleteRow[i];
}
}
// Regardless, paste newly submitted data onto blank rows :
database.getRange(blankRow,1,3).setValue(form.getRange("C2").getValue());
database.getRange(blankRow,2,3).setValues(form.getRange("B4:B6").getValues());
database.getRange(blankRow,3,3).setValues(form.getRange("C4:C6").getValues());
ui.alert("New Data Saved");
}
无论出于何种原因,“for 循环”无法验证任何条件,因此脚本只是跳转到循环下方执行 setValue() 操作。这是我要实现的目标的说明:desired sheet result
作为一个完整的脚本新手,实际上是整体编程,我怀疑为“for循环”等编写Javascript数组是一个错误 - 但是在我将本教程复制粘贴到一个新的之后,事情变得更加奇怪了表只是为了测试这主要是我的脚本能力差还是系统中的潜在错误:https://codewithcurt.com/how-to-clear-delete-insert-and-replace-row-using-google-apps-script/
..你猜对了,我什至无法让本教程中的 deleteRow() 函数工作。
其他注意事项:
- 我已经清除了浏览器 cookie,刷新了我的工作表,并且浏览器 (Brave) 和操作系统 (MacOS) 都是最新的
- “表格”表的“C2”单元格中的数据格式与“数据库”表的“日期”列中的数据格式相同(日期格式)
最后,链接到一个虚拟表:https://docs.google.com/spreadsheets/d/1U4RaP7TG5_zfpROQ2ghAG3KKARKjK_YDc7KT02_0F_k/copy
感谢您的帮助!
【问题讨论】:
标签: google-apps-script google-sheets