【问题标题】:Change Drop Down List cell in Google Sheets based on date using Google Apps Script使用 Google Apps 脚本根据日期更改 Google 表格中的下拉列表单元格
【发布时间】:2020-05-14 12:09:33
【问题描述】:

我对 Google Apps 脚本完全陌生,我正在尝试在 Google 表格中添加一个包含 IF 语句的下拉列表。

我在 A 列中有一个标题为“发布日期”的列,在 D 列中有“状态”。我希望 D 列中的每个单元格都从“在 Hootsuite 上计划”和“在 Wordpress 上计划”更改为“ Published" 一旦今天的日期已过发布日期。

我创建了一个 IF 语句公式,但公式不能用于标准的 Google 表格数据验证,所以我转向 Google Apps 脚本,但不知道该怎么做。

我已经在 Google Apps 脚本中设置了下拉列表:

function myFunction() {
  var cell = SpreadsheetApp.getActive().getRange('D2:D999');
var range = SpreadsheetApp.getActive().getRange('J2:J6');
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
cell.setDataValidation(rule);

}

var range (J2:J6) 列举如下;待写,初稿已写,预定在 Hootsuite 上,预定在 WordPress 上,已发布。

你知道如何在这个脚本中添加 IF 语句吗?

【问题讨论】:

    标签: google-apps-script google-sheets drop-down-menu


    【解决方案1】:

    您可以结合使用循环和条件语句来实现

    示例:

    function checkOnTimer(){
      var sheet = SpreadsheetApp.getActive().getActiveSheet();
      var values = SpreadsheetApp.getActive().getRange('A2:D' + sheet.getLastRow()).getValues(); 
      for (var i = 0; i < values.length; i++){
        if(values[i][0].getTime() >= new Date().getTime() && (values[i][3] == "Scheduled on Hootsuite" || values[i][3] == "Scheduled on WordPress")){
          sheet.getRange((i+2), 4).setValue("Published");
        }
      }      
    }
    

    如果您想自动执行任务,请创建例如每日时间驱动的触发器,将自动运行该函数。

    参考资料:

    【讨论】:

    • 谢谢,但是当我尝试使用该代码时出现以下错误; TypeError: values[i][0].getTime 不是函数(第 5 行,文件“代码”)
    • 这意味着您的单元格值不是有效日期或空单元格。您可以使用 if 语句捕获它或相应地调整您的数据范围。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    • 1970-01-01
    • 2021-06-08
    相关资源
    最近更新 更多