簡體   English   中英

Google Sheet Script Editor - 數組的 setValues

[英]Google Sheet Script Editor - setValues for array

我正在嘗試使用 Google 工作表腳本中的 setValues 用新值替換舊值。

數據在下面的鏈接...

https://docs.google.com/spreadsheets/d/1pSUVkxM9FhSNgizedHbY2MnYGTnC2iiYLfrWsoPmDks/edit?usp=sharing

我基本上是在嘗試刪除“跟蹤器”列下的前 14 個字符和后 12 個字符

下面是我試過的代碼..

function URLReplacement() {
  var ss =  SpreadsheetApp.getActive().getSheetByName("transformer");
  var rng = ss.getRange("G:G");
  var data = rng.getValues();
  for (var items in data)
  {
    var newer = data[items][0].substring(14)
    // Turn these strings into an array
    var newerr = newer.split(" ")
    // Turn this into 2 dimensional array to use setValues

    ss.getRange("G:G").setValues([newerr])

  Logger.log([newer]);
}
}

但是現在,我在 setValues 語句中遇到錯誤說我在那里設置的范圍與數據不匹配

我在這里做錯了什么..?

任何人都可以向我提供建議/建議嗎?

  • 您想在“G”列IMAGE_SUFFIX_"http://google.com"<xxxnouse>"http://google.com
  • IMAGE_SUFFIX_"http://google.com"<xxxnouse>"的格式是不變的。

如果我的理解是正確的,這個修改怎么樣? 您錯誤的原因是[newer]不是用於使用setValues()二維數組。 如果刪除了此錯誤,則通過覆蓋空值來刪除標頭。 所以我想修改如下。

改裝要點:

  • 當使用getLastRow() ,它檢索的數據大小可以比 "G:G" 檢索的數據大小減少。 由此,可以降低工藝成本。
  • getRange(2, 7, ss.getLastRow(), 1)不檢索標頭。
  • IMAGE_SUFFIX_"http://google.com"<xxxnouse>"的格式IMAGE_SUFFIX_"http://google.com"<xxxnouse>"split()用於解析這個值。
  • 轉換后的數據由setValues()放置。 由此,還可以降低工藝成本。

修改后的腳本:

function URLReplacement() {
  var ss =  SpreadsheetApp.getActive().getSheetByName("transformer");
  var rng = ss.getRange(2, 7, ss.getLastRow(), 1); // Modified
  var data = rng.getValues();
  var convertedData = data.map(function(e) {return e[0] ? [e[0].split('"')[1]] : e}); // Added
  rng.setValues(convertedData); // Added
}

筆記:

  • 在您共享的示例電子表格中,工作表名稱是“Sheet1”。 但是您的腳本使用“變壓器”作為工作表名稱。 請注意這一點。
  • 如果電子表格中實際值的格式與共享電子表格不同,則可能無法使用。

參考:

如果這不是您想要的結果,我深表歉意。

暫無
暫無

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

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