簡體   English   中英

如何循環 function 並每次插入我從電子表格中的單元格中提取的不同變量,直到我完成我的范圍

[英]How do I loop a function and each time insert different variables which I'm pulling from cells in my spreadsheet until I finish my range

我正在嘗試運行 function ,它將為每一行放置一個 Twilio 調用,並從每一行收集不同的變量。

這意味着如果我選擇了 10 行,我想進行 10 次調用,但是每個調用都有不同的變量,我從單元格行中提取這些變量,然后將這些變量插入到調用參數中。

我知道如何使用選擇作為參數的行進行調用,但如果我 select 假設每個調用是唯一的 10 行范圍,我無法弄清楚如何重復更多行。

    function getCc() {
      var range = SpreadsheetApp.getActiveRange();
      var row = range.getRow();
      var range2 = SpreadsheetApp.getActiveSheet().getRange("A"+row);
      return range2.getValue();
    }
    
    function getExp() {
      var range = SpreadsheetApp.getActiveRange();
      var row = range.getRow();
      var range2 = SpreadsheetApp.getActiveSheet().getRange("B"+row);
      return range2.getValue();
    }
    
    function getCvc() {
      var range = SpreadsheetApp.getActiveRange();
      var row = range.getRow();
      var range2 = SpreadsheetApp.getActiveSheet().getRange("C"+row);
      return range2.getValue();
    }
    
    function getAmount() {
      var range = SpreadsheetApp.getActiveRange();
      var row = range.getRow();
      var range2 = SpreadsheetApp.getActiveSheet().getRange("D"+row);
      return range2.getValue();
    }
    
    function getNum() {
      var range = SpreadsheetApp.getActiveRange();
      var row = range.getRow();
      var range2 = SpreadsheetApp.getActiveSheet().getRange("E"+row);
      return range2.getValue();
    }

    function makeCall() {
      var callUrl = "https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxxxxxxxxxxxx/Calls.json";
    
      var num = getNum();
      var amount = getAmount();
      var cc = getCc();
      var lastfour = cc.toString().substring(12);
      var exp = getExp();
      var cvc = getCvc();
        
      var payload = {
        "SendDigits" : "wwww1" + num + "#wwww" + amount + "#wwww" + cc + "#www" + exp + "#www" + cvc + "#wwwwwwwwwwwwwwwwwwwww2",
        "To": "+184xxxxxxxx",
        "From" : "+134xxxxxxxxx",
        "Url": "https://brasxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
        "Method": "GET"
      };
      
      var options = {
        "method" : "post",
        "payload" : payload
      };
      
      options.headers = {    
        "Authorization" : "Basic " + Utilities.base64Encode("ACxxxxxxxxxxxxxxxxxxxb:6xxxxxxxxxxxxxxxxxx")
      };
    
    var ui = SpreadsheetApp.getUi();
    var response = ui.alert('Proceed with Charge ?', 'Do you want to Charge Card \r\n Ending in '+lastfour+' for $'+amount+' ?', ui.ButtonSet.YES_NO);

if (response == ui.Button.YES) {
  UrlFetchApp.fetch(callUrl, options);
} 
  
}

這個怎么樣:

function getData() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Your Sheet Name');
  const sr=2;//start row
  const sc=1;//start column
  const rg=sh.getRange(sr,sc,sh.getLastRow()-sr+1,sh.getLastColumn()-sc+1);
  const vs=rg.getValues();
  vs.forEach(function(r,i){
    makeCall(r);
  })
}


function makeCall(row) {
  var callUrl = "https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxxxxxxxxxxxx/Calls.json";
  var num = row[4];
  var amount = row[3];
  var cc = row[0];
  var lastfour = cc.toString().substring(12);
  var exp =  row[1];
  var cvc = row[2];
  var payload = {
    "SendDigits" : "wwww1" + num + "#wwww" + amount + "#wwww" + cc + "#www" + exp + "#www" + cvc + "#wwwwwwwwwwwwwwwwwwwww2",
    "To": "+184xxxxxxxx",
    "From" : "+134xxxxxxxxx",
    "Url": "https://brasxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
    "Method": "GET"
  };
  var options = {
    "method" : "post",
    "payload" : payload
  };
  options.headers = {    
    "Authorization" : "Basic " + Utilities.base64Encode("ACxxxxxxxxxxxxxxxxxxxb:6xxxxxxxxxxxxxxxxxx")
  };
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert('Proceed with Charge ?', 'Do you want to Charge Card \r\n Ending in '+lastfour+' for $'+amount+' ?', ui.ButtonSet.YES_NO);
  if (response == ui.Button.YES) {
    UrlFetchApp.fetch(callUrl, options);
  } 
}

也許您可以在電子表格中添加一列來確定調用類型,您可以使用 switch 語句將每個調用的相應數據用於 select

function placeCalls() {
  const ss=SpreadsheetApp.getActive();
  const sh=ss.getSheetByName('Call Sheet');
  const v=sh.getDataRange().getValues();
  v.forEach(function(r,i){
    let calltype=r[10];
    switch(calltype) { //you will have to figure out what ever type of structure fits your needs
      case 'exp':
        let params={calltype:r[10],param1:,param2:}
        break;
        let params=
      case 'cc':
        break;
      case 'cvc':
        break;
    }
    placeCall(params);
  })
}

function placeColl() {
  //write your call function here. 
}

暫無
暫無

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

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