0
我想设置一个脚本,只有当3个特定的列有一个字符串时,当第4个为“是”在其中运行的脚本。通过下面的声明,每当任何一个字段发生变化或者批准的列被更改为“是”时,它都会运行该脚本。如果当前正在编辑的行是第一行,它也不应该运行。运行功能之前可以检查多个空白吗?
function onEditIntake() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSheet();
var r = SpreadsheetApp.getActiveRange();
var row = r.getRow();
var approved = s.getRange(row,10).getDisplayValue();
var iproject = s.getRange(row,7).getDisplayValue();
var assignee = s.getRange(row,8).getDisplayValue();
var deadlineDate = s.getRange(row,9).getDisplayValue();
if (iproject != null && assignee != null && deadlineDate != null && row != "1" && approved != "Yes") {
任何意见将不胜感激!
澄清:每次更改任何字段时,脚本的其余部分都会运行。我只希望它在满足所有IF条件时运行。
更新:我已将代码更改为如下所示。它现在不会在每次编辑时触发If语句。但是,只要“Yes”声明提供给已批准,它就会启动脚本,而不管其他字段是否为空,空值,“”或任何其他类型的任何变量。
function onEditIntake() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = SpreadsheetApp.getActiveSheet();
var r = SpreadsheetApp.getActiveRange();
var row = r.getRow();
var approved = s.getRange(row,10).getDisplayValue();
var iproject = s.getRange(row,7).getDisplayValue();
var assignee = s.getRange(row,8).getDisplayValue();
var deadlineDate = s.getRange(row,9).getDisplayValue();
Logger.log("Approved: " + approved);
Logger.log("Project: " + iproject);
Logger.log("Deadline: " + deadlineDate);
Logger.log("Assignee: " + assignee);
if ((iproject != " ") && (assignee != " ") && (deadlineDate != " ") && (row != "1") && (approved == "Yes")) {
你在哪里检查'是'?你只是在检查'approved'是不是'null',所以它可能是'Yes'或'No'。 – Barmar
什么'console.log(认为,iproject,受让人,deadlineDate);'当这种情况发生时显示? – Barmar
@Barmar我对此很新,但脚本似乎不喜欢console.log。只是一些快速的谷歌搜索似乎指向需要使用记录器的谷歌脚本? –