簡體   English   中英

在 Google 表格移動應用上使用 onEdit 運行 function

[英]Run a function with onEdit on Google Sheets mobile app

I made my function that it's working good for me now, but i have the issue to make it work on mobile so i tried another way to use the function OnEdit, so when it will be the value that i want to lunch the function that i以前創建的,但現在它不起作用,我不知道為什么它不起作用,我請求你幫助解決這個小問題;)謝謝

function onEdit(e) { 
  var range = e.range;
  var spreadSheet = e.source;
  var sheetName = spreadSheet.getActiveSheet().getName();
  var column = range.getColumn();
  var row = range.getRow();
  var value = SpreadsheetApp.getActiveSheet().getRange(row, column).getValue();
  
  if(sheetName == 'New Orders' && column == 12 && value=='COMMANDE VALIDER')
  {  
    VALIDERCOMMANDE();   
  } 
}

function VALIDERCOMMANDE() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var copySheet = ss.getSheetByName("New Orders");

  var url = "https://docs.google.com/spreadsheets/d/1eTWG_XZt-3CMzkxgKM4pCvD41deGMdka37eQkHM9oDg/edit#gid=0";
  var ss2 = SpreadsheetApp.openByUrl(url);
  var pasteSheet = ss2.getSheetByName("Order Pull");

// get source range
var max = copySheet.getMaxRows().toString();
var range = copySheet.getRange(2, 1, max, 12);
var dataValues = range.getValues();

for (i = 1; i < dataValues.length; i++) {
    if (dataValues[i][11] === 'COMMANDE VALIDER') {
        pasteSheet.appendRow([dataValues[i][0],
            dataValues[i][1],
            dataValues[i][2],
            dataValues[i][3],
            dataValues[i][4],
            dataValues[i][5],
            dataValues[i][6],
            dataValues[i][7],
            dataValues[i][8],
            dataValues[i][9],
            dataValues[i][10],
            dataValues[i][11]]);

        var clearRow = i + 2;
        copySheet.getRange('D' + clearRow + ':L' + clearRow).clearContent();
    }
}

// get destination range
var destination = pasteSheet.getRange(pasteSheet.getLastRow() + 1, 1, max, 1);

// clear source values
Browser.msgBox('Commande Confirmer');
}

Class 瀏覽器、Class UI 和 SpreadsheetApp.toast 在 Google 表格移動應用程序(iOS 和 Android)中不起作用。 另一方面,您應該使用可安裝的觸發器,而不是使用簡單的觸發器,因為SpreasheetApp.openByUrl方法需要授權才能運行。

更改onEdit的名稱function,去掉Browser.msgBox('Commande Confirmer'); 並創建一個可安裝的編輯 function 調用重命名的 function 應該使您的腳本在移動應用程序上工作

如果您確實需要在 onEdit function 完成時有自定義通知,您可以在特定范圍內發送寫入消息或圖像。 如果您使用 on edit 可安裝觸發器,您還可以發送 email 或調用外部 API。

有關的

試試這個方法

function onMyEdit(e) {
  const sh = e.range.getSheet();
  if (sh.getName() == 'New Orders' && e.range.columnStart == 12 && e.value == 'COMMANDE VALIDER') {
    VALIDERCOMMANDE();
  }
}
function VALIDERCOMMANDE() {
  var ss = SpreadsheetApp.getActive();
  var csh = ss.getSheetByName("New Orders");
  var id = "1eTWG_XZt-3CMzkxgKM4pCvD41deGMdka37eQkHM9oDg";
  var ss2 = SpreadsheetApp.openById(id);
  var psh = ss2.getSheetByName("Order Pull");
  var vs = csh.getRange(2,1,csh.getLastRow() - 1, 12).getValues().filter(r => r[11] == 'COMMANDE VALIDER').filter(e => e);
  psh.getRange(psh.getLastRow() + 1, 1, vs.length, 12).setValues(vs);
}

我經常發現onEdits在移動端不可靠,有時觸發過程必須重復

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM