我很难在Googlesheets中运行javascript来执行以下操作:
现在我设法找到了类似于我在基本级别尝试做的事情的例子(因此我的问题在这里): Insert row between different data正是因为我得到了这个:
function doSomething() {
var spreadsheet = SpreadsheetApp.openById('mySheetID'),
tab = spreadsheet.getSheets()[0], // Get the first tab
values = tab.getRange(2, 1, tab.getLastRow(), 3).getDisplayValues(), //Get the values beginning in the second row because of the headers
newValues = [], // Empty array where we're gonna push the new values
lastName;
// Loop through all the values
for(var i = 0; i <values.length; i++){
// If the last name is different from the current name or the last date is different from the current date add an empty "row" to the new array
if((lastName != undefined) && (values[i][1] != lastName)){
newValues.push(['','','']);
}
//Add the current row to the new array
newValues.push(values[i]);
//Sets the lastDate and lastName to the current values for the next evaluation
lastName = values[i][1];
}
//Sets the new values
tab.getRange(2,1,newValues.length,3).setValues(newValues)
},
这会插入一个新行,但每隔一行插入一个新行,所以我怀疑它正在拾取C列中的数据(每行上的数据不同),而不是列A中的数据。
我已经Google搜索了很多,甚至找到了如何用SpreadsheetApp.openById
位打开工作表,所以我正在寻求帮助,或者你是否可以指出以上代码的内容。我知道这是非常有帮助的评论,但正如我所说,我是javascript的新手。
如果它有帮助,那么Excel / VBA脚本可以完美运行:
Sub InsertRowsAtValueChange()
Dim i As Long
Application.ScreenUpdating = False
For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
If Range("A" & i - 1).Value <> Range("A" & i).Value Then
Rows(i).Resize(2).Insert
Range("M" & i).Value = Range("A" & i - 1).Value
End If
Next
Application.ScreenUpdating = True
End Sub
他们是以下VBA问题中的一些图表,但在这里看不到如何做到这一点,抱歉:https://www.mrexcel.com/forum/excel-questions/1034334-insert-blank-row-offset-copy-paste.html#post4964822
感谢您的时间和任何帮助,我没有使用javascript的经验,抱歉。
最大
我已经设法从我的“愿望清单”中获得第一和第二部分。我不完全理解它,但我已经评论过我可以在以后提醒自己:
function importFromSDE() {
// Open the Google Sheet
var spreadsheet = SpreadsheetApp.openById('mySheetID'),
// Get the tab by name
tab = spreadsheet.getSheetByName('Testing'),
// Get the values beginning in the second row because of the headers
// Values from Row 2, Column 1, Down to last row, across 11 columns
values = tab.getRange(2,1,tab.getLastRow(),11).getDisplayValues(),
// Empty array where we're gonna push the new values
newValues = [],
lastT1Item;
// Loop through all the values
for(var i=0; i<values.length; i++){
// If the last name is different from the current name or the last date is different from the current date add an empty "row" to the new array
if((lastT1Item != undefined) && (values[i][0] != lastT1Item)){
newValues.push(['','','','','','','','','','','']);
newValues.push(['','','','','','','','','','','']);
}
//Add the current row to the new array
newValues.push(values[i]);
//Sets the lastT1Item to the current values for the next evaluation
lastT1Item = values[i][0];
}
//Sets the new values
tab.getRange(2,1,newValues.length,11).setValues(newValues)
}