亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何將 Google Apps 腳本應用于多張工作表

如何將 Google Apps 腳本應用于多張工作表

互換的青春 2023-03-24 14:15:21
我想將以下代碼應用于同一 Google 表格中的多個選項卡。在第一個 var 中定義不同的選項卡,或在同一項目中應用多個 .gs 文件,每個文件具有不同的 var 都沒有成功。var naamWerkbladKasboek = "Kasboek"; var naamWerkbladOpties = "Opties";var eersteKolomMetInput = 2; var tweedeKolomMetInput = 3; var derdeKolomMetInput = 4; var werkblad = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(naamWerkbladKasboek);var werkbladOpties = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(naamWerkbladOpties);var Opties = werkbladOpties.getRange(2, 1, werkbladOpties.getLastRow()-1, 3).getValues();function onEdit(e){  var activeCell = e.range;  var val = activeCell.getValue();  var row = activeCell.getRow();  var column = activeCell.getColumn();  var werkbladName = activeCell.getSheet().getName();    if(werkbladName === naamWerkbladKasboek && column === eersteKolomMetInput && row > 1){    applyFirstLevelValidation(val, row);  } else if(werkbladName === naamWerkbladKasboek && column === tweedeKolomMetInput && row > 1){     applySecondLevelValidation(val, row);  }} function applyFirstLevelValidation(val, row){    if(val === ""){      werkblad.getRange(row, tweedeKolomMetInput).clearContent();      werkblad.getRange(row, tweedeKolomMetInput).clearDataValidations();      werkblad.getRange(row, derdeKolomMetInput).clearContent();      werkblad.getRange(row, derdeKolomMetInput).clearDataValidations();    } 我已經嘗試使用 only 和 exclude 標簽,如下所示:How to run a script on multiple sheets, Google Sheets還嘗試使用數組,如下所示: https: //webapps.stackexchange.com/questions/115076/ how-to-run-script-on-multiple-google-sheet-tabs但都無濟于事。有人可以指出我正確的方向嗎?
查看完整描述

3 回答

?
紫衣仙女

TA貢獻1839條經驗 獲得超15個贊

在onEdit你檢查當前工作表的名稱是否包含“Kasboek”


function onEdit(e){

  var activeCell = e.range;

  var activeSheet = activeCell.getSheet();

  

  if(activeSheet.getName().includes("Kasboek")){

    KasboekModification(activeCell);

  } else {

    //code here if changes need to be made on other sheets

  }

}

之后,您就擁有了function KasboekModification(cell){}可以發揮當前工作表魔力的功能。


查看完整回答
反對 回復 2023-03-24
?
Qyouu

TA貢獻1786條經驗 獲得超11個贊

回答:

onEdit(e)如果已編輯的工作表不是要編輯的預定義工作表之一,一個簡單的解決方案是返回。


代碼示例:

只做:_


var only = ["Sheet1Name", "Sheet2Name", "Sheet3Name"]; // add sheet names as desired


function onEdit(e) {

  if (!(only.includes(e.range.getSheet().getName())) {

    return;

  }

  // put the rest of your onEdit function here

}

或排除:


var exclude = ["Sheet4Name", "Sheet5Name", "Sheet6Name"]; // add sheet names as desired


function onEdit(e) {

  if (exclude.includes(e.range.getSheet().getName())) {

    return;

  }

  // put the rest of your onEdit function here

}

您的用例示例:

var only = ["Kasboek", "Kasboek2", "Kasboek3"];


function onEdit(e) {

  if (!(only.includes(e.range.getSheet().getName())) {

    return;

  }


  var activeCell = e.range;

  var val = activeCell.getValue();

  var row = activeCell.getRow();


  if (row <= 1) return;


  var column = activeCell.getColumn();

  var eersteKolomMetInput = 2; 

  var tweedeKolomMetInput = 3; 

  var derdeKolomMetInput = 4;

  

  if (column === eersteKolomMetInput) {

    applyFirstLevelValidation(val, row);

  } 

  else if (column === tweedeKolomMetInput) {

    applySecondLevelValidation(val, row);

  }


function applyFirstLevelValidation(val, row) {

  // ...

}


function applySecondLevelValidation(val, row) {

  // ...

}


查看完整回答
反對 回復 2023-03-24
?
瀟湘沐

TA貢獻1816條經驗 獲得超6個贊

TypeError:無法讀取未定義的屬性“范圍”(第 7 行,文件“multipledatavalidation”)

第 7 行;如果 (exclude.includes(e.range.getSheet().getName())) { 返回;

應該注意的是,我的工作表上還有另一個腳本在運行。一個可以讓我在鎖定到位的情況下復制工作表。我希望能夠在我制作的原始工作表的所有副本上運行此代碼。這是我的工作表的共享、可編輯版本的鏈接。

  var optionsWsName = "Backend-Prices";

      var wsOptions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(optionsWsName);

      var exclude = ["BackendImportedData", "donotedit", "BackendDataSort", "09/20_DS7"]; // add sheet names as desired

    

// function to update each time the file is Edited 


function onEdit(e){

      if (exclude.includes(e.range.getSheet().getName())) {

        return;

      }

      

      var Options = wsOptions.getRange(2, 1, wsOptions.getLastRow()-1, 5).getValues();

      var activeCell = e.range;

      var val = activeCell.getValue();

      var r = activeCell.getRow();

    

      if (r <= 8) return;

    

      var c = activeCell.getColumn();

      var FirstLevelColumn = 1;

      var SecondLevelColumn = 2; 

      var ThirdLevelColumn = 3; 

      var FourthLevelColumn = 4;

      

      

      if(c === FirstLevelColumn){

        applyFirstLevelValidation(val, r);

      } else if(c === SecondLevelColumn){ 

        applySecondLevelValidation(val, r);

      } else if(c === ThirdLevelColumn){ 

        applyThirdLevelValidation(val, r);

      }

    

}//end onEdit

    

    

    

    // function for second level of data validation to work correctly

    

function applyFirstLevelValidation(val, r){

      

      if(val === ""){

          ws.getRange(r, SecondLevelColumn).clearContent();

          ws.getRange(r, SecondLevelColumn).clearDataValidations();

          ws.getRange(r, ThirdLevelColumn).clearContent();

          ws.getRange(r, ThirdLevelColumn).clearDataValidations();

          ws.getRange(r, FourthLevelColumn).clearContent();

          ws.getRange(r, FourthLevelColumn).clearDataValidations();

        } else {

          ws.getRange(r, SecondLevelColumn).clearContent();

          ws.getRange(r, SecondLevelColumn).clearDataValidations();

          ws.getRange(r, ThirdLevelColumn).clearContent();

          ws.getRange(r, ThirdLevelColumn).clearDataValidations();

          ws.getRange(r, FourthLevelColumn).clearContent();

          ws.getRange(r, FourthLevelColumn).clearDataValidations();

          var filteredOptions = Options.filter(function(o){ return o[0] === val });

          var listToApply = filteredOptions.map(function(o){ return o[1] });

          var cell = ws.getRange(r, SecondLevelColumn);

          applyValidationToCell(listToApply,cell);

        }


}

    

    // function for third level of data validation to work correctly

    

function applySecondLevelValidation(val, r){

      

      if(val === ""){

          ws.getRange(r, ThirdLevelColumn).clearContent();

          ws.getRange(r, ThirdLevelColumn).clearDataValidations();

          ws.getRange(r, FourthLevelColumn).clearContent();

          ws.getRange(r, FourthLevelColumn).clearDataValidations();

        } else {

          ws.getRange(r, ThirdLevelColumn).clearContent();

          ws.getRange(r, ThirdLevelColumn).clearDataValidations();

          ws.getRange(r, FourthLevelColumn).clearContent();

          ws.getRange(r, FourthLevelColumn).clearDataValidations();

          var firstlevelColValue = ws.getRange(r, FirstLevelColumn).getValue();

          var filteredOptions = Options.filter(function(o){ return o[0] === firstlevelColValue && o[1] === val });

          var listToApply = filteredOptions.map(function(o){ return o[2] });

          var cell = ws.getRange(r, ThirdLevelColumn);

          applyValidationToCell(listToApply,cell);

        }

        

}

    

    

    // function for fourth level of data validation to work correctly

    

    function applyThirdLevelValidation(val, r){

      

      if(val === ""){

          ws.getRange(r, FourthLevelColumn).clearContent();

          ws.getRange(r, FourthLevelColumn).clearDataValidations();

        } else {

          ws.getRange(r, FourthLevelColumn).clearContent();

          var firstlevelColValue = ws.getRange(r, FirstLevelColumn).getValue();

          var secondlevelColValue = ws.getRange(r, SecondLevelColumn).getValue();

          var filteredOptions = Options.filter(function(o){ return o[0] === firstlevelColValue && o[1] === secondlevelColValue && o[2] === val });

          var listToApply = filteredOptions.map(function(o){ return o[3] });

          var cell = ws.getRange(r, FourthLevelColumn);

          applyValidationToCell(listToApply,cell);

        }


}


    

function applyValidationToCell(list,cell){

      

var rule = SpreadsheetApp

 .newDataValidation()

 .requireValueInList(list)

 .setAllowInvalid(false)

 .build();

      

 cell.setDataValidation(rule)

    

    }



查看完整回答
反對 回復 2023-03-24
  • 3 回答
  • 0 關注
  • 141 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號