我需要你的帮助,我的脚本如下。我有2张(sheet1和sheet2)。 Sheet1包含将在其中复制/更新sheet2中的单元格的单元格值。该脚本将添加和复制从sheet1到sheet2的值,但它不会识别该条件。我想要发生的是,如果sheet2!c3 = sheet1!f5
只更新单元格,否则它将添加另一行并将数据从sheet1复制到sheet2。
感谢您的帮助!
function emailongoing() {
var sheet1 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('OutageYellow');
var sheet2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('test');
var lastRow = sheet2.getLastRow()+1;
cntr = 0
if (sheet2.getRange('C3') != sheet1.getRange('F5')) {
sheet1.getRange('E5').copyTo(sheet2.getRange(lastRow + cntr,2), {contentsOnly:true});
sheet1.getRange('F5').copyTo(sheet2.getRange(lastRow + cntr,3), {contentsOnly:true});
sheet1.getRange('C5').copyTo(sheet2.getRange(lastRow + cntr,5), {contentsOnly:true});
sheet1.getRange('C7').copyTo(sheet2.getRange(lastRow + cntr,4), {contentsOnly:true});
sheet1.getRange('C8').copyTo(sheet2.getRange(lastRow + cntr,9), {contentsOnly:true});
sheet1.getRange('C9').copyTo(sheet2.getRange(lastRow + cntr,10), {contentsOnly:true});
cntr++;
}
else if (sheet2.getRange('C3') != " ") {
sheet1.getRange('E5').copyTo(sheet2.getRange(lastRow + cntr,2), {contentsOnly:true});
sheet1.getRange('F5').copyTo(sheet2.getRange(lastRow + cntr,3), {contentsOnly:true});
sheet1.getRange('C5').copyTo(sheet2.getRange(lastRow + cntr,5), {contentsOnly:true});
sheet1.getRange('C7').copyTo(sheet2.getRange(lastRow + cntr,4), {contentsOnly:true});
sheet1.getRange('C8').copyTo(sheet2.getRange(lastRow + cntr,9), {contentsOnly:true});
sheet1.getRange('C9').copyTo(sheet2.getRange(lastRow + cntr,10), {contentsOnly:true});
cntr++;
}
}
答案 0 :(得分:0)
花点时间了解JavaScript中的数据类型和结构。这是基本的东西,可以为您节省很多麻烦。
https://medium.com/dailyjs/back-to-roots-javascript-value-vs-reference-8fb69d587a18
根据文档,' getRange()' Sheet类的方法返回Range对象的实例。
https://developers.google.com/apps-script/reference/spreadsheet/range
因为JS中的对象是通过引用而不是通过值传递的(请参阅第1个链接),比较这两个Range实例就像询问这些对象是否占用内存中的相同位置一样。显然,情况并非如此,因为getRange(" C3")与getRange(" F5")不同。同样,对于对象,比较的是对它们存储在内存中的位置的引用,而不是它们中的实际属性和值。
另一方面,原始值(包括字符串)按值传递,因此您可以比较它们。但是,通过显式调用相应的构造函数,首先将变量构建为对象时会有一些警告。考虑一下:
price
您必须调用Range对象上的getValue()或getValues()方法,以获取可以从表格单元格中比较的值。最后,一次迭代一个单元格是一个可怕的做法,会使你的脚本非常迟缓。 请查看此答案以获取详细信 Copy/Push data from array into a sheet range one row at a time using Google Apps Script