
【GAS】Google Apps Script 活用事例 チェックを入れたら本日の日付を入力し、着色するスクリプト
スクリプトを書かなくても出来なくはない

チェックを入れると、日付を入力するスクリプトです。
スクリプト全文
/**
* チェックを入れたら、グレーアウトして、本日の日付を入力する
*
* 以下のライブラリを使用
* https://note.com/nepia_infinity/n/n73bb5e0f1357#e0afbb00-b8d9-49b4-bbd9-8558797e0056
*
* スクリプトID
* 18rg2maFYXNmPmB2R-8s3UuFG850j5OLw4WBvcOrghzRMlfVbQWDgOVvZ
*
*/
function applyGrayColorToRow() {
const sheetName = 'シート名を入力する';
const activeSheet = SpreadsheetApp.getActiveSheet();
// アクティブなシートが処理対象のシートではなかったら処理を終了する
if(activeSheet.getName() !== sheetName) return;
const values = activeSheet.getDataRange().getValues();
const header = values[0];
const column = {
hasCheck: header.indexOf('メール送付') + 1,
sentDate: header.indexOf('連絡日') + 1,
}
console.log(column);
//ライブラリで定義されている関数を使用
const activeCell = nepia_infinity.getActiveCell(activeSheet);
//チェックが付いたら、次の処理を実行する
if(activeCell.column === column.hasCheck && activeCell.value === true){
const targetRange = activeSheet.getRange(activeCell.row, 1, 1, activeSheet.getLastColumn());
const colors = targetRange.getValues().map(row => row.map(value => '#999999'));
console.log(`処理対象範囲: ${targetRange.getA1Notation()}`);
console.log(colors);
//ライブラリで定義されている関数を使用
const today = nepia_infinity.formatDate(new Date(), 'yyyy/MM/dd');
activeSheet.getRange(activeCell.row, column.sentDate).setValue(today);
targetRange.setBackgrounds(colors);
}
}
以下のライブラリを使用しています
スクリプトID
18rg2maFYXNmPmB2R-8s3UuFG850j5OLw4WBvcOrghzRMlfVbQWDgOVvZ
今回のスクリプトでは、チェックをした際に日付を入力しています。
入力時に他の処理をする必要がなければ、下記に紹介する条件付き書式でも対応可能です。必要に応じて使い分けることが大切です。
条件付き書式でも一応同じ事が出来る

=$A2="close"
後日、チェックをつけたら色を無色にするスクリプトを書きました。
/**
* TECHOFFER管理表内にチェックを付けたら、行の色をnullに戻す関数
*
*/
function resetRowColor() {
const url = '*********';
const sheetName = nepia_infinity.getSheetByUrl(url, 'sheetName');
const activeSheet = SpreadsheetApp.getActiveSheet();
const activeCell = nepia_infinity.getActiveCell(activeSheet);
if(activeSheet.getName() !== sheetName) {
console.log(`処理対象のシートではないため処理を終了します。`);
return
}else if(activeCell.value === true){
const range = activeSheet.getRange(activeCell.row, 1, 1, activeSheet.getLastColumn());
const values = range.getValues();
console.log(`処理範囲:${range.getA1Notation()}`);
const originalColors = values.map(row => row.map(color => null));
range.setBackgrounds(originalColors);
}
}