[英]Set function output as a variable for another function (GAS)
在此先感謝您幫助我。
在 Google Apps 腳本中,我希望使用 function rowOfEmployee 的 output 作為 function saveData 的變量(editrow)
有人可以幫我做這個嗎? 我敢肯定這是一件非常簡單明了的事情,我可能會因為沒有解決它而踢自己哈哈
這是我的兩個代碼:
var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var data = datasheet.getDataRange().getValues();
var employeesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Save");
var employee = employeesheet.getRange("B1").getValue();
for(var i = 0; i<data.length;i++){
if(data[i][0] == employee){
Logger.log((i+1))
return i+1;
}
}
}
function saveData() {
var datasheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var data = datasheet.getDataRange().getValues();
var employeesheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Save");
var employee = employeesheet.getRange("B1").getValue();
var editrow = rowOfEmployee //Here I want to take the output from the previous function rowOfEmployee
var col = datasheet.getLastColumn();
var target = datasheet.getRange(editrow,col +1);
var saveEntry = employeesheet.getRange("B2").getValue();
saveEntry.copyTo(target, {contentsOnly:true})
}
你想從那個循環中吃午飯嗎? 你必須用另一種方式來做,不是從 saveData,而是從第一個 function。
將 function 命名為function saveData(editRow)
並通過命名並放入變量從循環中調用它: saveData(i+1)
PS:在你的function中刪除editRow的定義,說var editRow...
一種方法是使用Array.indexOf()
,如下所示:
function saveData() {
const ss = SpreadsheetApp.getActive();
const employeeSheet = ss.getSheetByName('Save');
const employee = employeeSheet.getRange('B1').getValue();
const dataSheet = ss.getSheetByName('Data');
const names = dataSheet.getRange('A1:A').getValues().flat();
const targetIndex = names.indexOf(employee);
if (targetIndex === -1) {
ss.toast(`Name '${employee}' cannot be found.`);
return;
}
dataSheet.getRange(targetIndex + 1, dataSheet.getLastColumn() + 1)
.setValue(employeeSheet.getRange('B2').getValue());
ss.toast(`Data saved.`);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.