google-apps-script - 如何将一张工作表中的分配任务转移到另一张工作表?
问题描述
好的,我知道 Google 表格中的脚本,尤其是 ImportRange 函数。但是,这不仅仅是一个简单的导入,因为必须满足一些条件。
就这样吧。在一个 Google 表格文件中,我有 5 张表格。
表 1 包含任务和详细信息,在 AP 列中指示(因此占用一整行)。根据 Q 列的数据验证选项中指示的内容,将任务分配给一个人。
同时,对于表格 2-5,它们是数据验证选项中每个人的表格。表 1 中的任务应转移到表 2-5,具体取决于表 1 的 Q 列中分配的任何人。
在工作过程 POV 中,这将是关于交通的。我应该在脚本编辑器中输入什么代码?
解决方案
这是一个简单的示例,您可以在此基础上进行构建:
function assignTask() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var rg=sh.getDataRange();
var vA=rg.getValues();
var today=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "E MMM dd, yyyy");
for(var i=1;i<vA.length;i++){
if(!vA[i][3]){
var sht=ss.getSheetByName(vA[i][2]);
if(sht){
sht.appendRow([vA[i][0],today]);
}else{
var sht=ss.insertSheet(vA[i][2]);
sht.appendRow(['Task','Date'])
sht.appendRow([vA[i][0],today]);
}
vA[i][3]='Done';
vA[i][1]=today;
}
}
rg.setValues(vA);
}
电子表格看起来像这样:
运行脚本后是这样的:
如果此人的工作表不存在,它将创建它并在创建后将标题信息放入其中。如果存在,则该行仅附加到底部。已分配的任务在已分配列中具有“完成”,并且在日期列中具有分配日期。显然,你可以用它做很多其他的事情,所以玩得开心。
回答您的问题: 您的函数复制列。
function copyColumns() {
var srcSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Total");
var desSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Cooked");
var cA = ['A','C','D','F'];
var pA = ['A','B','C','D'];
for(var i=0;i<cA.length;i++){
srcSheet.getRange(cA[i] + ':' + cA[i]).copyTo(desSheet.getRange(pA[i] + ':' + pA[i]));
//src colA to des colA, src colc to des colB,src colD to des colC,src colF to des colD
}
}
查看这些参考资料:
推荐阅读
- casting - 铸造钢筋混凝土
到 Rc - android - 字符串转双倍方法
- java - 在 TomTom Android SDK 中返回的位置为空
- java - 不兼容的类型:RGBColor [][] 无法转换为 Double [][] -Error
- html - 缩小时网页中的空白
- plot - 轴号相互干扰
- android - Android 不显示 READ_CONTACT WRITE_CONTACTS 的权限请求对话框
- javascript - 从 AG-Grid 中移除焦点
- python - python:从 python 字符串列表中提取浮点数(31.99 澳元)
- three.js - Threejs中网格对应材质的光线选择问题