google-apps-script - Trigger script when a specific cell value in another sheet chan
问题描述
Hello everyone so I am using this google sheets script below that copies the entire contents of one sheet to another sheet. I would like for this script to only trigger when a there is value change in cell TI of the sheet that being copied. Does any one have an idea how to do this? Thank you so much for you help.
function Packaging() {
var t = SpreadsheetApp.openById('sheetid');
var pp = t.getSheetByName('UP');
var ppk = pp.getRange(1,1,pp.getLastRow(),pp.getLastColumn()).getValues();
var data = []
for (var i = 0; i< ppk.length ; i++){
if(ppk[i][24] == "Yes")
{
data.push(ppk[i])
}
}
var s = SpreadsheetApp.getActiveSpreadsheet();
var sp = s.getSheetByName('DOWN');
sp.getRange(1,1,sp.getLastRow(),sp.getLastColumn()).clearContent();
sp.getRange(1,1,data.length,data[0].length).setValues(data);
sp.deleteColumns(29, 7);
}
解决方案
尝试这个:
function onEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()=='Sheet being copied' && e.range.columnStart=="col of cell" &&
e.range.rowStart=="row of cell" && e.value=="special value of cell") {
var vA=sh.getDataRange().getValues();
e.source.getSheetByName('sheet to copy to').getRange(1,1,vA.length,vA[0].length).setValues(vA);
}
}
也许这是价值的变化:
function onEdit(e) {
var sh=e.range.getSheet();
if(sh.getName()=='Sheet being copied' && e.range.columnStart=="col of cell" &&
e.range.rowStart=="row of cell" && e.oldValue && e.value!=e.oldValue) {
var vA=sh.getDataRange().getValues();
e.source.getSheetByName('sheet to copy to').getRange(1,1,vA.length,vA[0].length).setValues(vA);
}
}
推荐阅读
- python - 在 Python selenium 中定位元素
- ada - 使用“使用”。它不仅仅消除了对前缀的需求吗?
- firebase - Firebase 使用自定义 404 重写问题
- python - 使用 if 条件将 lambda 应用于整个数据帧
- java - 尝试访问其中一个子字段的字段时,休眠过滤器 defaultCondition 中的标识符无效
- node.js - 返回第一个满足条件的数组中的值
- python - Python 在 Anaconda 提示符下工作,但不在命令提示符下
- android - 在 xamarin android 上以编程方式打开文件选择器界面
- c++ - c++,当我向用户提供我的共享库时,应该提供哪些头文件?
- javascript - 如何访问对象上的子键值并克隆该对象