javascript - 谷歌表格脚本缺少一些东西
问题描述
我正在工作表内创建一个小型数据库,我需要脚本将数据复制到另一个工作表选项卡,但出现空错误。我不是 javascript 专家,所以我在这里缺少什么代码?
基本上,当你按下一个按钮时,你会得到一个带有输入的文本模式,所以这个人会写下名字,然后脚本会用 TRUE(复选框)获取所有行,并将所有内容复制到另一张表中,标题是数据和时间该人的姓名。如果返回为空且所有 FALSE 都不会复制并显示一个文本模式,说明今天没有完成任何任务。
提前致谢
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange ("RESUMO!A4:J99");
var destSheet = ss.getSheetByName("LOG Resumo");
var row = destSheet.getLastRow()+2; //the starting column of the range
var column = 1; //the starting row of the range
var numRows = 97; //the number of rows to return
var numColumns = 10; //the number of columns to return
var destRange = destSheet.getRange(row, column, numRows, numColumns);
var input_text = Browser.inputBox("Encarregado de Turno","Escreve seu nome:", Browser.Buttons.OK);
var now = new Date();
var active = ss.getSheetByName("RESUMO");
var condition = active.getRange('RESUMO!J4:J99').getValue();
var valueToWatch = "TRUE";
if (condition == valueToWatch) {
destSheet.getRange(row-1,1,1,10).mergeAcross().setBackgroundRGB(224, 102, 102).setFontColor("white");
destSheet.getRange(row-1,1,1).setValue(now + " ~~ ENCARREGADO DE FECHAR TURNO: " + input_text).activate();
source.copyTo(destRange, {contentsOnly: true}).setFontColor("black");
} else {
Browser.msgBox("Erro","Não exite tarefas completas hoje", Browser.Buttons.OK);
}
}
解决方案
您的代码存在以下问题:
- 如果您将 TRUE 和 FALSE 值作为单元格内容,电子表格将自动将它们识别为布尔值,而不是字符串。因此,还
valueToWatch
需要是布尔值而不是字符串:var valueToWatch = true;
- 如果您想验证每一行的“TRUE”条件 - 您需要在循环中进行。因此,您的代码需要稍作修改。这样做的一种方法是将列中单元格内容所在的所有行推
J
入TRUE
一个数组,然后将该数组的内容传递到与该数组具有相同维度的目标范围。生成的代码如下所示:
function moveValuesOnly() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var source = ss.getRange ("RESUMO!A4:J99");
var destSheet = ss.getSheetByName("LOG Resumo");
var row = destSheet.getLastRow()+2; //the starting column of the range
var column = 1; //the starting row of the range
var input_text = Browser.inputBox("Encarregado de Turno","Escreve seu nome:", Browser.Buttons.OK);
var now = new Date();
var active = ss.getSheetByName("RESUMO");
var condition = active.getRange('RESUMO!J4:J99').getValues();
destSheet.getRange(row-1,1,1,10).mergeAcross().setBackgroundRGB(224, 102, 102).setFontColor("white");
destSheet.getRange(row-1,1,1).setValue(now + " ~~ ENCARREGADO DE FECHAR TURNO: " + input_text).activate();
var valueToWatch = true;
var values=source.getValues();
var array=[];
for(var i=0;i<condition.length;i++){
if (condition[i][0] == valueToWatch) {
array.push( values[i]);
}
}
if(!array) {
Browser.msgBox("Erro","Não exite tarefas completas hoje", Browser.Buttons.OK);
}
else {
var numRows = array.length; //the number of rows to return
var numColumns = array[0].length; //the number of columns to return
var destRange = destSheet.getRange(row, column,numRows , numColumns);
destRange.setValues(array).setFontColor("black");
}
}
推荐阅读
- php - 如何在 php 中获取 Sql Not Null 字段?
- vb.net - 如何在类中添加点击事件 vb.net
- asp.net-mvc - 如何在部分视图asp.net mvc中编写客户端自定义java脚本进行验证
- ajax - 更改选择框值不能应用于使用 ajax 和 jquery 的标签
- jquery - 如何在图像的宽度上制作花式框标题?
- python - 如何使用 python 检索令牌
- go - 在括号中初始化 Go 结构有什么作用?
- java - 如何从 Spring Boot maven 项目中删除或隐藏目标文件?
- c# - CardView中的Xamarin Recyclerview按钮,无法获取位置
- maven - 如何将jmeter聚合图保存为maven目标文件夹中的文件夹中的png