【问题标题】:How to Move a Row to Two Different Locations on a Different Google Sheets Tab Based off Two Different Criteria如何根据两个不同的标准将行移动到不同 Google 表格选项卡上的两个不同位置
【发布时间】:2023-02-11 14:45:22
【问题描述】:

如果 H 列显示“已批准”,我想从一个名为“新项目”的谷歌工作表选项卡复制并粘贴一行到另一个名为“项目选项卡”的谷歌工作表选项卡,然后清除复制的行。此外,我希望在创建复制和粘贴功能之前,标题为“项目选项卡”的选项卡上复制行的目标以“新项目”选项卡上的 G 列为条件。如果 G 列显示“4”或“5”,我想将该行复制并粘贴到名为“项目选项卡”的选项卡上的第 8 行,否则将该行复制并粘贴到名为“项目选项卡”的选项卡的第 60 行。所以总结一下:如果 H 列在“新项目”选项卡中显示“已批准”,请检查 G 列是否有“4”或“5”。如果它确实移动到名为“项目选项卡”的选项卡上的第 8 行,否则移动到第 60 行。下面是图片:

"New Projects" Tab

Top of "Project Tab" Tab

Bottom of "Project Tab" Tab"

我已经单独创建在职的将行复制到“项目选项卡”选项卡后对行进行排序的功能。这些功能如下图所示:

Sorting Functions

下面的代码代表我目前拥有的。现在它正在复制“新项目”选项卡中的行并粘贴到第 8 行的“项目选项卡”选项卡中,而不管“新项目”选项卡上的 G 列是什么。这是我需要帮助的地方。如何创建一个代码,根据 G 列复制并粘贴到特定位置,但该函数直到 H 列中显示为“已批准”时才会运行?

function onEdit(event){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var s = event.source.getActiveSheet();
  var r = event.source.getActiveRange();

  newprojectstoProjecttab(ss,s,r);
}

   function newprojectstoProjecttab(ss,s,r){
       if(s.getName() == "New Projects" && r.getColumn() == 8 && r.getValue() == "Approved") {
         var row = r.getRow();
         var targetSheet = ss.getSheetByName("Project Tab");
         var target = targetSheet.getRange(60,1,1);
         var prioritytarget = targetSheet.getRange(8,1,1);   
            if(r.getColumn() == 7 && r.getValue() == "4" || "5") {
              s.getRange(row, 1, 1, 7).copyTo(prioritytarget);
              var clearRange = s.getRange(row,1,1,8);
              clearRange.clearContent();
           } else {
              s.getRange(row, 1, 1, 7).copyTo(target);
              var clearRange = s.getRange(row,1,1,8);
              clearRange.clearContent();
           }
       }   
   }

任何帮助将非常感激!如果您需要更多信息,请告诉我!

【问题讨论】:

  • 我必须为我糟糕的英语水平道歉。不幸的是,我无法理解你的问题。我可以问你问题的细节吗?

标签: if-statement google-apps-script google-sheets move nested-if


【解决方案1】:
  • 第一个 IF 是 sheet="New Products" 和 Column H = "Approved"
  • 第二个IF是G列的值:if (ColGValue == 4 || ColGValue == 5){
    • 如果为真,则目标为第 8 列:var target = targetSheet.getRange(8,1,1)
    • 如果为假,则目标为第 60 列:var target = targetSheet.getRange(60,1,1)
  • 此后,命令是相同的
    • 复制数据到目标:s.getRange(editedRow, 1, 1, 7).copyTo(target)
    • 删除源:s.getRange(editedRow,1,1,8).clearContent()

    var ss = spreadsheetApp.getActiveSpreadsheet()
    var s = event.source.getActiveSheet()
    
    // get the edited row, and the values of Column G and H
    var editedRow = event.range.rowStart
    var ColHValue = s.getRange(editedRow,8).getValue()
    var colGValue = s.getRange(editedRow,7).getValue()

    
    if(s.getName() == "New Projects" && ColHValue == "Approved") {
        var targetSheet = ss.getSheetByName("Project Tab")
        if (ColGValue == 4 || ColGValue == 5){
            // if Column G =4 or 5, copy to row 8
            var target = targetSheet.getRange(8,1,1)
        }
        else 
        {
            // if Column G <> 4 or 5, then copy to row 60
            var target = targetSheet.getRange(60,1,1)
        }
        s.getRange(editedRow, 1, 1, 7).copyTo(target)
        s.getRange(editedRow,1,1,8).clearContent()
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    相关资源
    最近更新 更多