簡體   English   中英

Google Scripts,如何將數據設置為具有變量名的工作表

[英]Google Scripts, how to set data into sheet with variable name

我的目標是將另一張紙上的單元格設置為特定值。 所需的工作表和單元格是可變的。 我已將所需行和所需工作表都存儲在活動工作表上的 M 和 F 行中。

SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Navigation").getRange('B1').setValue("Test1");

上面的代碼有效,將值“Test1”設置為導航表上的單元格 B1。

但是,由於工作表和單元格必須是基於存儲在單元格內的數據的變量,所以我必須這樣做:

function onEdit(e) {
  // Set a comment on the edited cell to indicate when it was changed.
  var sheet = SpreadsheetApp.getActiveSheet();
  var Range = e.range;
  var Row = e.getrange.rowStart;
  Logger.log(Row);
 
  if(range.getSheet().getSheetName() == "Summary"&& //Ensure trigger on single column in document
    e.range.columnStart == 10 &&  // This section works
    e.range.columnEnd == 10 &&
    e.range.rowStart >= 4 &&
    e.range.rowEnd <= 5000) {
    
        // range.setValue(Row);
        Range1 = sheet.getRange("M1:M100"); //Obtain the row for the desired cell (stored within cells in column M)
        var cell1 = Range1.getCell(Row,1);
        var Row_Value = cell1.getValue();
        // range.setValue(Row_Value);

        Range2 = sheet.getRange("F1:F100"); //Get the name of the desired  sheet (stored within cells in column F)
        var cell2 = Range2.getCell(Row,1);
        var Name_Value = cell2.getValue();
        // range.setValue(Name_Value);

        Range3 = sheet.getRange("A1:G200");  //Get the Cell Location as a range
        var cell3 = Range3.getCell(Row_Value,7);

        Range4 = sheet.getRange(cell3);
        SpreadsheetApp.getActiveSpreadsheet().getSheetByName(Name_Value).getRange(Row_Value).setValue("Test1"); //Set value to required range on required sheet.
    }
}

然而,這不起作用。 它應該做的是從列 M 中獲取所需的行,並從列 F 中獲取工作表名稱,並使用它將“測試”寫入該工作表上的該單元格。

我在調試期間確實收到錯誤

TypeError:無法讀取未定義 onEdit 的屬性“范圍”

我將其歸因於 function 需要一個范圍 (e) 但在調試過程中沒有給出這一事實。

如果有人可以幫助解決這個問題,那就太好了,因為我對 javascript 一無所知。 謝謝你-S

嘗試這個:

function onEdit(e) {
  const sheet = e.range.getSheet();
  if (sheet.getName() !== 'Summary'
    || e.range.columnStart !== 10
    || e.range.rowStart < 4) {
    return;
  }
  const sheetName = sheet.getRange('F' + e.range.rowStart).getValue() || 'no sheet name';
  const columnLetter = sheet.getRange('G' + e.range.rowStart).getValue() || 'no column letter';
  const rowNumber = sheet.getRange('M' + e.range.rowStart).getValue() || NaN;
  const targetCell = e.source.getRange(sheetName + '!' + columnLetter + rowNumber);
  targetCell.setValue('testing...');
}

暫無
暫無

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

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