亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于電子表格和工作表的新手問題

關于電子表格和工作表的新手問題

倚天杖 2023-08-10 15:44:45
這樣使用電子表格和工作表是錯誤的嗎?function ADD_COLUMN() {  var spreadsheet = SpreadsheetApp.getActive();  spreadsheet.getRange('B:B').activate();  spreadsheet.getActiveSheet().insertColumnsBefore(spreadsheet.getActiveRange().getColumn(), 1);  spreadsheet.getActiveRange().offset(0, 0, spreadsheet.getActiveRange().getNumRows(), 1).activate();    var ss = SpreadsheetApp.getActiveSpreadsheet();    var sheet = ss.getActiveSheet();    sheet.getRange(1,2).setValue(sheet.getRange(1,3).getValue()+1);    var addedDateAndTime = Utilities.formatDate(new Date, ss.getSpreadsheetTimeZone(), "MMMM yyyy");    sheet.getRange(2,2).setValue(addedDateAndTime)};此腳本在 A 列和 B 列之間添加一列,將 (C1 --此單元格在創建 bew 列之前為 B1 -- + 1) 的值插入到 B1 中,并將當前日期(月和年)插入到 B2 中。我對腳本不太熟悉,是根據其他腳本制作的,所以如果這個腳本是錯誤的,那么有人可以用簡單的方式解釋為什么是錯誤的嗎?
查看完整描述

2 回答

?
慕森卡

TA貢獻1806條經驗 獲得超8個贊

如果您想在“之間”添加一列A,然后B插入提到的值,您可能會受益于查看以下代碼:


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)

}

然而,最顯著的變化是,根據Apps 腳本最佳實踐,最好僅調用服務一次 - 因此存儲spreadsheet和 的值sheet。此外,由于您只想插入列,因此無需激活工作表中的范圍。

查看完整回答
反對 回復 2023-08-10
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

說明/問題:

  • 您邏輯中的問題是您在 A 和 B 之前添加了一個附加列,因此屬于單元格的值C1被轉移到D1。然后,當您使用時,sheet.getRange(1,3)您會得到單元格的新值C1,這可能不是您想要的。我建議您獲取列的值3加上之前添加的列數:

    sheet.getRange(1,3+columnsToAdd)

    這樣,之前的值C1將用于計算 cell 的值B1。

  • 在 Google Apps 腳本中,您無需設置活動范圍或工作表即可復制或粘貼數據。setActive自動創建的宏使用這些方法來向您顯示 中腳本的步驟ui,但除非您有其他原因,否則您幾乎不需要它們。

  • 電子表格對象和工作表是兩個不同類的實例。這意味著他們使用不同的方法。閱讀我提供的鏈接的文檔,了解為什么使用每個實例以及用于什么場景。

解決方案:

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);

};


查看完整回答
反對 回復 2023-08-10
  • 2 回答
  • 0 關注
  • 133 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號