簡體   English   中英

setValue() 用於多個單元格

[英]setValue() for multiple cells

我使用下面的函數來連接 Google Sheets 中單元格的值和一個超鏈接來在我的 ss 上創建一個HYPERLINK()函數。

    function setCustomLink(){
      var ss = SpreadsheetApp.getActive().getActiveSheet();
      var cell = ss.getActiveCell();
      var cellValue = cell.getValue();
      cell.setValue('=HYPERLINK("https://projudi.tjpr.jus.br/projudi/processo/buscaProcesso.do?actionType=pesquisaSimples&-H&Host:&projudi.tjpr.jus.br&-H&User-Agent:&Mozilla/5.0&(Windows&NT&6.3;&WOW64;&rv:49.0)&Gecko/20100101&Firefox/49.0&-H&Accept:&text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&-H&Accept-Language:&pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3&--compressed&-H&Referer:&https://projudi.tjpr.jus.br/projudi/processo/buscaProcesso.do?actionType=iniciarSimples&-H&Cookie:&projudiContCookie=0;&JSESSIONID=053165f8dd5f8532c326f3eb06d7;&projudi-route=4;&dtLatC=54;&dtPC=-;&dtCookie=49542FA50EF89B032E8685F08394F120|UHJvanVkaSstK0V4dGVybm98MQ&-H&Connection:&keep-alive&-H&Upgrade-Insecure-Requests:&1&--data&page=1&flagNumeroUnico=true&flagNumeroFisicoAntigo=false&numeroProcesso='
      + cellValue + '";"' + cellValue+'")');
    }

它工作得很好。 唯一的問題是我必須一個一個地執行函數,而且需要很多時間。 我通常把它們排成一排這樣 (A2:A):

例子

有什么辦法可以選擇整行並運行一次函數嗎? 我嘗試使用.foreach(function(r){return r[0]}) *,但由於某種原因永遠無法正確使用。 謝謝!

(僅供參考:內容是葡萄牙語,該功能允許我通過將其編號與搜索工具超鏈接鏈接來查看訴訟狀態)。

*這是我嘗試創建的函數,它返回為“null”。 我也試過range.forEach(function(r) ,但沒有運氣。

function myFunction() {
  var ss = SpreadsheetApp.getActive().getActiveSheet();
  var range = ss.getActiveRange().getValues();
  var value = range.forEach(function(r){ 
    '=HYPERLINK("https://projudi.tjpr.jus.br/projudi/processo/buscaProcesso.do?actionType=pesquisaSimples&-H&Host:&projudi.tjpr.jus.br&-H&User-Agent:&Mozilla/5.0&(Windows&NT&6.3;&WOW64;&rv:49.0)&Gecko/20100101&Firefox/49.0&-H&Accept:&text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8&-H&Accept-Language:&pt-BR,pt;q=0.8,en-US;q=0.5,en;q=0.3&--compressed&-H&Referer:&https://projudi.tjpr.jus.br/projudi/processo/buscaProcesso.do?actionType=iniciarSimples&-H&Cookie:&projudiContCookie=0;&JSESSIONID=053165f8dd5f8532c326f3eb06d7;&projudi-route=4;&dtLatC=54;&dtPC=-;&dtCookie=49542FA50EF89B032E8685F08394F120|UHJvanVkaSstK0V4dGVybm98MQ&-H&Connection:&keep-alive&-H&Upgrade-Insecure-Requests:&1&--data&page=1&flagNumeroUnico=true&flagNumeroFisicoAntigo=false&numeroProcesso=' + r[0] + '";"' + r[0]+'")'
  });
  range.setValue(value);
}

鑒於您使用getActiveCell() ,看起來您的工作流程是:

  1. 選擇一個單元格
  2. 執行函數以更新該單個單元格

要在選擇多個單元格時使用相同的工作流程,您需要使用Spreadsheet.getActiveRangeList()方法 這將允許您與所有當前選定范圍的列表進行交互。 這將適用於以下所有情況:

  • 選擇單個單元格
  • 選擇一系列連續的單元格
  • 選擇多個范圍的連續單元格(即使用 CTRL + 左鍵單擊)
// Use a global constant to ease editing the value should the URL need to be changed.
var URL_PREFIX = 'http://url/?param1=value1&param2=';

function setCustomLinks() {
  var activeSheet = SpreadsheetApp.getActiveSheet();
  var ranges = activeSheet.getActiveRangeList().getRanges();

  // Loop through the ranges.
  for (var i = 0; i < ranges.length; i++) {

    // Get all cell values of the range into a 2D array.
    var values = ranges[i].getValues();

    // Loop through the 2D array of values.
    for (var j = 0; j < values.length; j++) {
      for (var k = 0; k < values[j].length; k++) {

        // Replace each value with a hyperlink formula.
        values[j][k] = createCustomLink(values[j][k]);
      }
    }

    // Set the cell values using the new values.
    ranges[i].setValues(values);
  }
}

function createCustomLink(value) {
  var url = URL_PREFIX + value;
  return '=HYPERLINK("' + url + '", "' + value + '")';
}

這種方法的另一個好處是它使用批處理操作在單個方法調用中獲取/設置每個值范圍。 這使得它在處理大范圍時更快,並且是記錄在案的最佳實踐之一

暫無
暫無

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

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