首页 > 解决方案 > Google Pass脚本如何在某个单元格上粘贴任何值时运行onEdit()

问题描述

每当我在工作表“Temp”单元格 C2 上粘贴任何值时,我都想运行触发器

我怎样才能做到这一点 ?

--

这是我的代码

function onEdit(e) {
  if(e.range.getSheet().getName()!='Temp')return;
  if(e.range.getA1Notation()!='C2')return;
  e.source.toast('You enter: ' + e.range.getValue());

 // what I want to run when any value is pasted on C2
 Script();   
}

我想注意,当我仅在 C2 中复制和粘贴时它有效,但我采用了整个范围并粘贴它,所以也许这就是为什么不适合我的原因?也许我必须更改一些在我粘贴时指示的内容一个范围?

--

这是我粘贴范围时要运行的脚本函数

function Script(){

  // Gets Temp Sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName("Temp");

  // Change file name
  ss.rename(sh.getRange('Q4').getValue());

  // Hide Sheet "Temp"
  sh.hideSheet();

  // Paste as values dates from sheet Temp
  var range ="AL3:AL5";
  sh.getRange(range).copyTo(sh.getRange(range), {contentsOnly:true})

  // Hides blank rows in sheets 1,2,3
  Hide();

  // Creates the File in Drive
  var sheetId = ss.getId(); 
  var folder = DriveApp.getFolderById("ID"); // The File is stored in this folder
  var name = ss.getName() + ".xlsx"; // The name of the new file  
  var url = "https://docs.google.com/spreadsheets/d/" + sheetId + "/export?format=xlsx&access_token=" + ScriptApp.getOAuthToken();
  var blob = UrlFetchApp.fetch(url).getBlob().setName(name); // Modified
  folder.createFile(blob);


  Reset();
}

/*
After the file is generated 
*/

function Reset() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('Temp');  

  // Unhide Sheet "Temp"
  sheet.showSheet();

  // Resets Sheet Temp
 sheet.getRange('A1:AI').clearContent();
  sheet.getRange('AL3').setFormula('=AL1');
  sheet.getRange('AL4').setFormula('=WORKDAY(AL3,1)');
  sheet.getRange('AL5').setFormula('=WORKDAY(AL4,1)');

  // Reset the file name
  ss.rename('_'+'TEMPLATE');

  // Set the cursor to move to Temp
  SpreadsheetApp.setActiveSheet(ss.getSheetByName('Temp'))

  // Unhides Rows from sheets 1,2,3
  Unhide();

}

标签: google-apps-script

解决方案


这个:

function onEdit(e) {
  if(e.range.getSheet().getName()!='Temp')return;
  if(e.range.rowStart==2 && e.range.columnStart==3) {
    Script();
  }
}

推荐阅读