Google 表单回复清除单元格的 onEdit 表单脚本
Google sheets script onEdit of form response clear cells
我正在尝试在表单编辑时为 运行 创建一个 Google 脚本,但不确定当有人通过 Google 稍后编辑 URL 并添加新答案。
我需要抓取他们的响应所在的行并仅清除单元格 AO、AP、AQ 和 AR 的内容。
我知道这一定是一团糟,但我正在努力。这是我目前所拥有的:
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var range = sheet.getRange("A2:AL");
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight()-1;
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth()-1;
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd)
{
var ss = e.range.getSheet();
ss.getRange(thisRow,"AO" & i & ":AR" & i) // Get cells in range AO,AP,AQ,AR to clear out
.clearContent();
}
};
我重新开始了。我有这个脚本在工作,但还不是完全需要的方式。我只需要它来清除 firstdate != secdate
所在行的单元格 (AH) 的内容。现在,当一个单元格满足条件时,它会清除 AH 列的所有单元格。
function compareClear() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var firstdate = sheet.getRange("E3:E").getValues();
var secdate = sheet.getRange("AG3:AG").getValues();
if(firstdate != secdate){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("AH3:AH").clearContent();
}
}
以防其他人在这个问题上需要帮助:
Google Docs 论坛中 Spencer 的大力帮助以及我添加的一些更改的脚本非常有效。它可能不是最漂亮的脚本,但它满足了我的需要。
function compareClear() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form Responses 1");
var firstdate;
var secdate;
for (var i = 3; i < sheet.getLastRow(); i++) {
firstdate = new Date(sheet.getRange(i, 4).getValue());
secdate = new Date(sheet.getRange(i, 45).getValue());
if(firstdate > secdate){
sheet.getRange(i, 41).clearContent();
sheet.getRange(i, 42).clearContent();
sheet.getRange(i, 43).clearContent();
sheet.getRange(i, 44).clearContent();
}
}
}
我正在尝试在表单编辑时为 运行 创建一个 Google 脚本,但不确定当有人通过 Google 稍后编辑 URL 并添加新答案。
我需要抓取他们的响应所在的行并仅清除单元格 AO、AP、AQ 和 AR 的内容。
我知道这一定是一团糟,但我正在努力。这是我目前所拥有的:
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSheet();
var editRange = sheet.getActiveRange();
var editRow = editRange.getRow();
var editCol = editRange.getColumn();
var range = sheet.getRange("A2:AL");
var rangeRowStart = range.getRow();
var rangeRowEnd = rangeRowStart + range.getHeight()-1;
var rangeColStart = range.getColumn();
var rangeColEnd = rangeColStart + range.getWidth()-1;
if (editRow >= rangeRowStart && editRow <= rangeRowEnd
&& editCol >= rangeColStart && editCol <= rangeColEnd)
{
var ss = e.range.getSheet();
ss.getRange(thisRow,"AO" & i & ":AR" & i) // Get cells in range AO,AP,AQ,AR to clear out
.clearContent();
}
};
我重新开始了。我有这个脚本在工作,但还不是完全需要的方式。我只需要它来清除 firstdate != secdate
所在行的单元格 (AH) 的内容。现在,当一个单元格满足条件时,它会清除 AH 列的所有单元格。
function compareClear() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet1");
var firstdate = sheet.getRange("E3:E").getValues();
var secdate = sheet.getRange("AG3:AG").getValues();
if(firstdate != secdate){
SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").getRange("AH3:AH").clearContent();
}
}
以防其他人在这个问题上需要帮助:
Google Docs 论坛中 Spencer 的大力帮助以及我添加的一些更改的脚本非常有效。它可能不是最漂亮的脚本,但它满足了我的需要。
function compareClear() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Form Responses 1");
var firstdate;
var secdate;
for (var i = 3; i < sheet.getLastRow(); i++) {
firstdate = new Date(sheet.getRange(i, 4).getValue());
secdate = new Date(sheet.getRange(i, 45).getValue());
if(firstdate > secdate){
sheet.getRange(i, 41).clearContent();
sheet.getRange(i, 42).clearContent();
sheet.getRange(i, 43).clearContent();
sheet.getRange(i, 44).clearContent();
}
}
}