在谷歌电子表格单元格中输入第一个字符时,是否有可能获得一个提示框,其中包含适合后续插入的选项?(也就是按照jQuery中是如何实现的例子来的)
ibarbylev's questions
在执行脚本的过程中,我需要将新片段添加到现有文档中。将每个新片段严格放置在新页面上是很重要的。现在我通过添加空行来解决问题,这非常不方便,因为它取决于字体大小,图像的存在等。还有其他更可靠的方法吗?
该表格组织了相关的下拉列表,由几名员工不断地处理。一旦第一个用户开始编辑一行,有没有办法阻止其他用户编辑它?并且,相应地,一旦编辑完成就取消禁令?
我通过读取电子表格上的相同(!)组单元格来创建 2 个数组。但是在比较这些数组时,由于某种原因,它们彼此并不相等。
var sm = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Data");
var arr1 = sm.getRange(2, 1, 1, 2).getValues();
var arr2 = sm.getRange(2, 1, 1, 2).getValues();
if(arr1 == arr2) {
Logger.log("equal");
} else {
Logger.log("not equal");
}
结果是“不相等”。
但为什么?!!!
假设有一个数组 var arrayQuestion = [0, 1, 0, 1, 0];
需要获取单元出现的位置。indexOf() 方法为每个请求返回一个结果。
arrayQuestion.indexOF(1); // 结果 1 arrayQuestion.indexOF(1, 2); // 结果 3
是否有现成的优雅方法(解决方案),其中输出将是 arrayQuestion 数组中的单位索引数组?
也就是说,在我们的例子中它应该是 arrayResult = [1, 3]
MainFunc() 函数对 SecondsToHours() 函数返回的单元格值进行加减运算。在“Main”表的单元格 (4,5) 中,taskTotalTime 的分配(理论上)应该由 minesTime 的值相加。问题是该值不是作为数字总结的,而是作为字符串总结的。也就是说,0.19 + 0.19 = 0.190.19 工作表上的单元格被格式化为数字 (#0,000.00)。有趣的是,在下一个单元格 (4,6) 中,从数字中减去相同的 minesTime 变量,一切正常 - 数字每次减少 0.19。
这里有什么问题?
function MainFunc() {
var ssMain = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Main")
var minesTime = SecondsToHours(684)
// здесь всё нормально: вычитает как число
var taskTimeRamaining = ssMain.getRange(i, 6).getValue();
taskTimeRamaining -= minesTime;
ssMain.getRange(4, 6).setValue(taskTimeRamaining);
// а здесь почему-то суммирует как строку
var taskTotalTime = ssMain.getRange(i, 5).getValue();
taskTotalTime += minesTime;
ssMain.getRange(4, 5).setValue(taskTotalTime);
}
function SecondsToHours(s) {
var h = s/3600;
h = h.toFixed(2);
return h;
}
单元格包含波兰语文本:“dziękuję”。我正在尝试读取并显示值 x = ActiveCell.Value MsgBox (x) 但是,它显示的不是“ę”字符,而是“e”:“dziekuje”。如何解决?