我正在嘗試在 Google Apps 腳本中為包含每月自動更新的資料的 Google 表格創建一個函式。我想要洗掉 A 列中值為 '1/30/3800' 的單元格(即我想將其值設定為 ''。)我一生都無法弄清楚如何根據其字串指定單元格值,而不是基于它在電子表格中的位置。我試過這兩種方法:
1)
function forecastUpdate() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = spreadsheet.getSheets()[1]
let data = sheet.getDataRange().getValues()
for (let i = 0; i <- data.length; i ) {
if (data[i] === '1/30/3800') {
data[i] = '';
}
}
}
function forecastUpdate() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = spreadsheet.getSheets()[1]
let data = sheet.getDataRange().getValues()
for (let value of data) {
if (value === '1/30/3800') {
value = '';
}
}
}
它說它執行,但它沒有 - 我的作業表中沒有任何更新。有小費嗎?!注 1:我試圖清除的單元格的值源自 Google 表格中的 QUERY 公式。不確定這是否重要。注2:我不能通過它在表格中的位置(A41)來選擇它,因為它的位置每個月都會改變。
uj5u.com熱心網友回復:
你必須使用Range.setValue
。也data就是此處的2D陣列。所以你需要正確獲取值。
假設值 '1/30/3800' 是一個字串并且不被解釋為日期,以下應該可以作業。
function forecastUpdate() {
let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
let sheet = spreadsheet.getSheets()[1];
let data = sheet.getDataRange().getValues();
let foundAtRow;
for (let i = 0; i < data.length; i ) {
let row = data[i];
let colA = row[0];
if (colA === '1/30/3800') {
foundAtRow = i 1;
break;
}
}
if (!foundAtRow) {
throw new Error('Match not found.');
}
sheet.getRange('A' foundAtRow).setValue('');
}
根據公式,您可能無法更新單元格值
uj5u.com熱心網友回復:
函式使用每日觸發器每月發生一次,它在等于“1/30/3800”的列中查找字串并將每個單元格的值設定為空。
function forecastUpdate(e) {
if (e['day-of-month'] == 1) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sh = ss.getSheetByName('Sheet0');
const sr = 2;//data start row
const vs = sh.getRange(sr, 1, sh.getLastRow() - sr 1, 1).getDisplayValues()
vs.forEach(r => {
if (r[0] == '1/30/3800') {
r[0] = '';
}
});
sh.getRange(sr, 1, vs.length, vs[0].length).setValues(vs)
}
}
function createDailyTrigger() {
if (ScriptApp.getProjectTriggers().filter(t => t.getHandlerFunction() == 'forecastUpdate').lendth == 0) {
ScriptApp.newTrigger('forcastUpdate').timeBased().everyDays(1).atHour(0).create();
}
}
基于時間的事件物件
陣列.forEach
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358822.html
