![](/img/trans.png)
[英]How to insert a cell with value on every Nth row in a column in Google Sheets
[英]Google Sheets: How to automatically insert a word into a cell on a new row detected?
我搜索了高低,但我一直無法找到答案(我確定我沒有正確解釋)
我有一個 Google 表格,其中有多個標簽(標簽),標簽為 TabA、TabB 和 TabC。
在此 Google Sheet 上,我在 Slack 上提交了一個斜杠命令,然后使用應用程序腳本在其中一個選項卡上自動填充一行。
我想要做的只是在每次檢測到新行時將一個名為 TabA 的單詞插入到特定單元格中。 並在 TabB 表等上創建新行時插入一個名為 TabB 的單詞。
我確定我只是打錯了我的問題,這就是為什么我無法找到答案。
我實際上不確定代碼的哪一部分發布到工作表中,我認為是這個嗎?
if(sheetName) {
sheetName = sheetName.charAt(0).toUpperCase() + sheetName.slice(1)
} else {
sheetName = "Current"
}
// Find sheet
var sheetFlag = false;
for (var r = 1; r < settings.length; r++) {
if (settings[r][1] == channelID) {
var sheetID = settings[r][2];
var targetChannelID = settings[r][4];
var title = settings[r][0];
sheetFlag = true;
break;
}
}
if (sheetFlag) {
var sheet = SpreadsheetApp.openById(sheetID).getSheetByName(sheetName);
if(!sheet) {
sheet = SpreadsheetApp.openById(sheetID).insertSheet(sheetName);
}
var lastRow = sheet.getLastRow();
var slackDetails = ["", "", text1, "","","","","",realName, new Date(),title,text2];
// paste the slack details to the sheet
sheet.getRange(lastRow + 1,1,1,slackDetails.length).setValues([slackDetails]);```
Thank you in advance
如果我理解正確,你想:
TabA
, TabB
, TabC
)。正如您在評論中被告知的那樣,Apps 腳本沒有觸發器來跟蹤腳本對電子表格所做的更改。 例如, onEdit觸發器“在用戶更改電子表格中任何單元格的值時自動運行”。
此限制的一個可能解決方法是使用基於時間的觸發器,該觸發器將定期觸發函數。 您可以手動或以編程方式通過運行此函數一次來創建此觸發器:
function createTrigger() {
ScriptApp.newTrigger("trackRows")
.timeBased()
.everyMinutes(1)
.create();
}
這將每分鍾觸發函數trackRows
。 此函數的目的是跟蹤自上次觸發(在本例中為 1 分鍾前)以來對每個工作表行的更改,如果工作表的內容行比上次執行期間多,則將工作表名稱寫入某個單元格。
為此,您可以使用Properties Service ,它允許您存儲鍵值對並在以后的執行中使用它們。
函數trackRows
可能是以下幾行:
function trackRows() {
var props = PropertiesService.getScriptProperties();
var ss = SpreadsheetApp.openById("your-spreadsheet-id"); // Please change accordingly
var sheets = ss.getSheets();
sheets.forEach(function(sheet) {
var sheetName = sheet.getName();
var currentRows = sheet.getLastRow();
var oldRows = props.getProperty(sheetName);
if (currentRows > oldRows) {
var firstRow = 2;
var column = 4;
var numRows = sheet.getLastRow() - firstRow + 1;
var rowIndex = sheet.getRange(firstRow, column, numRows).getValues().filter(function(value) {
return value[0] !== "";
}).length;
var cell = sheet.getRange(rowIndex + firstRow, column);
cell.setValue(sheetName);
}
props.setProperty(sheetName, currentRows);
});
}
該函數執行以下操作:
function deleteProps() {
var props = PropertiesService.getScriptProperties();
props.deleteAllProperties();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.