【问题标题】:How to auto run Google Apps Script and auto update the google sheet?如何自动运行 Google Apps 脚本并自动更新 google 表格?
【发布时间】:2018-09-09 17:14:01
【问题描述】:

我是 JavaScript 和 Google Apps 脚本的初学者。

我编写了一段简单的代码来跟踪学生在班级中的分配状态,我希望程序自动运行并实时更改字段。

例如,如果学生在 10th 标准中输入 58% 并按 Enter,则资格状态应自动更改为“不合格”等。 是否有可能制作一个让 google sheet 自动取值的程序?

我正在粘贴下面的代码以供参考。请告诉我如何让谷歌表自动取值。

function placementMonitoring() {
    var app = SpreadsheetApp;

    //Get current active sheet
    var activeSheet = app.getActiveSpreadsheet().getActiveSheet();
    var someCell = activeSheet.getRange(3, 6).getValue();
    Logger.log(someCell);

    //var newCell=activeSheet.getRange(3,3).setValue(someCell+1)
    for (var i = 3; i <= 59; i++) {
        var someCell1 = activeSheet.getRange(i, 6).getValue();

        //attempt code for DEBARRED
        if (someCell1 == "D") {
            var attempt = 0;
            activeSheet.getRange(i, 7).setValue(attempt);
        } else

            //attempt code for PARTIALY DEBARED 
            if (someCell1 == "PD") {
                attempt = 5;
                activeSheet.getRange(i, 7).setValue(attempt);
            } else

                // attempt code for unplaced students
                if (someCell1 = "UP") {
                    attempt = "NOT APPLICABLE";
                    activeSheet.getRange(i, 7).setValue(attempt);
                }
    }
    for (var i = 3; i <= 59; i++) {
        var someCell2 = activeSheet.getRange(i, 12).getValue();
        var someCell3 = activeSheet.getRange(i, 15).getValue();
        var someCell4 = activeSheet.getRange(i, 18).getValue();
        var someCell5 = activeSheet.getRange(i, 20).getValue();
        var someCell6 = activeSheet.getRange(i, 21).getValue();
        if (someCell2 == 60 && someCell3 == 60 && someCell4 == 60 && someCell5 == 60 &&
            someCell6 == 60) {
            var eligibility = " Eligible";
            activeSheet.getRange(i, 8).setValue(eligibility);
        } else {
            var eligibility = "Not Eligible";
            activeSheet.getRange(i, 8).setValue(eligibility);
        }
    }
}

here is picture of my spreadsheet

【问题讨论】:

  • 嘿@Omkar,我有一个我经常使用的脚本,我会去找你。
  • 我需要你对你需要的东西更具体一点。
  • 查看参考文档和指南中的 Apps 脚本“简单触发器”。

标签: google-apps-script google-sheets


【解决方案1】:

好吧,我为完成类似的事情所做的就是创建一个新函数,其中包含一堆 if/else 语句。然后我创建了一个“数据表”,它只不过是一张用来保存我需要的数据的表。此脚本检查单元格 B1 的值是否为“Daryl I”。如果确实如此,则它将数据从“数据表”复制到新表中。每当单元格 B1 中的数据发生更改时,它就会自动运行与该“名称 N”关联的脚本。

  if (source.getRange('B1').getValue() == "Daryl I.")
      {
        var source_range = source.getRange("B5:N20");
        var target_range = target.getRange("B2:N17");
        target_range.copyTo(source_range);
      }

您需要创建一个专门命名为 this 的函数,并定义您希望它主动检查的列和行。必须命名为“function onEdit(e)”。

简单触发器

https://developers.google.com/apps-script/guides/triggers/

function onEdit(e) {
  if (
    e.source.getSheetName() == "Inked Not OA'd" &&
    e.range.columnStart == 2 &&
    e.range.columnEnd == 2 &&
    e.range.rowStart >= 1 &&
    e.range.rowEnd <= 1
  ) 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-24
    相关资源
    最近更新 更多