簡體   English   中英

將 function output 設置為另一個 function (GAS) 的變量

[英]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.

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