[英]How to pull data validation from another sheet in Google App 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.