簡體   English   中英

簡單的 Google 腳本和 Google 電子表格的問題

[英]Issue with simple Google Scripts and Google Spreadsheets

更新 2:這是一個權限問題。 我想我必須為每個電子表格復制所有腳本? 此外,我正在更新我的代碼,因為我已經修復了它。

更新:我的代碼是錯誤的(我認為我需要刪除第二個 for 循環)但我的問題是為什么腳本沒有在我的工作表上運行。

我正在嘗試將數據寫入電子表格中的列。 也許我只是有權限問題?

這是我第一次使用 Google 腳本,我也不熟悉 JavaScript。 我有一個包含大量數據的電子表格,我通過比較前兩列成功刪除了定義的重復項——沒有錯誤,沒有問題,第一次嘗試成功運行。 現在我試圖在兩個新的空列上填寫數據。

如果第 2 列的格式為“foo - bar”,我希望第 3 列為“foo”,第 4 列為“bar”。 所以我寫了這個腳本:

function parseTypes() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var newData = new Array();
  for (i in data) {
    var row = data[i];
    var str = row[2];
    var strSplit = str.split(" - ");
    row[3] = strSplit[0];
    if (strSplit[1] == "" || strSplit[1] == null || row[4] == undefined) {
      row[4] = "";
    } else {
      row[4] = strSplit[1];
    }
    newData.push(row);
  }
  sheet.clearContents();
  sheet.getRange(1, 1, newData.length, newData[0].length).setValues(newData);
}

我進行了調試,字符串數組 strSplit 被准確地設置為“foo,bar”。 我的問題是它實際上並沒有將數據寫入我的電子表格。 我不知道這是我的代碼還是我運行的腳本錯誤,因為我幾乎不知道我在做什么。

JavaScript 使用基於 0 的索引,但 SpreadsheetApp 使用基於 1 的索引。 這意味着 row[2] 返回的是 C 列的值,而不是 B 列的值。

您不必復制腳本。 您唯一需要更改的不是使用 SpreadsheetApp.getActiveSheet,而是必須使用 SpreadsheetApp.openByUrl(' https://blalaallla ').getSheetByName('blalala') 方法。 這樣您就不必復制它。 希望這可以幫助。

暫無
暫無

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

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