2 回答

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
如果您想在“之間”添加一列A,然后B插入提到的值,您可能會(huì)受益于查看以下代碼:
function ADD_COLUMN() {
? let spreadsheet = SpreadsheetApp.getActive();
? let sheet = spreadsheet.getActiveSheet();
? sheet.insertColumns(2, 1);
? sheet.getRange(1,2).setValue(sheet.getRange(1,3).getValue()+1);
? var addedDateAndTime = Utilities.formatDate(new Date, spreadsheet.getSpreadsheetTimeZone(), "MMMM yyyy");
? sheet.getRange(2,2).setValue(addedDateAndTime)
}
然而,最顯著的變化是,根據(jù)Apps 腳本最佳實(shí)踐,最好僅調(diào)用服務(wù)一次 - 因此存儲(chǔ)spreadsheet
和 的值sheet
。此外,由于您只想插入列,因此無(wú)需激活工作表中的范圍。

TA貢獻(xiàn)1850條經(jīng)驗(yàn) 獲得超11個(gè)贊
說(shuō)明/問(wèn)題:
您邏輯中的問(wèn)題是您在 A 和 B 之前添加了一個(gè)附加列,因此屬于單元格的值
C1
被轉(zhuǎn)移到D1
。然后,當(dāng)您使用時(shí),sheet.getRange(1,3)
您會(huì)得到單元格的新值C1
,這可能不是您想要的。我建議您獲取列的值3
加上之前添加的列數(shù):sheet.getRange(1,3+columnsToAdd)
這樣,之前的值
C1
將用于計(jì)算 cell 的值B1
。在 Google Apps 腳本中,您無(wú)需設(shè)置活動(dòng)范圍或工作表即可復(fù)制或粘貼數(shù)據(jù)。
setActive
自動(dòng)創(chuàng)建的宏使用這些方法來(lái)向您顯示 中腳本的步驟ui
,但除非您有其他原因,否則您幾乎不需要它們。電子表格對(duì)象和工作表是兩個(gè)不同類的實(shí)例。這意味著他們使用不同的方法。閱讀我提供的鏈接的文檔,了解為什么使用每個(gè)實(shí)例以及用于什么場(chǎng)景。
解決方案:
function ADD_COLUMN() {
? ? const ss = SpreadsheetApp.getActiveSpreadsheet();
? ? const sheet = ss.getActiveSheet();
? ? const columnsToAdd = 1;?
? ? ss.insertColumnsBefore(2, columnsToAdd);
? ? sheet.getRange(1,2).setValue(sheet.getRange(1,3+columnsToAdd).getValue()+1);
? ? const addedDateAndTime = Utilities.formatDate(new Date, ss.getSpreadsheetTimeZone(), "MMMM yyyy");
? ? sheet.getRange(2,2).setValue(addedDateAndTime);
};
添加回答
舉報(bào)