GASで課題管理システム

### 注意 (2022.11.12)
本記事は文明に追いついていません。  
いずれ改善版をだしますのでお待ちください。
# はじめに
GASの使い方がわからなくても完成までできるようにコピペで完成させられるようにしてあります。
仕組みなどは面倒くさいので割愛します。
# 目次
1.必要なもの
2.事前準備
3.作業
4.Googleフォーム作成
5.コードの書き換え、その他
6.補足説明、操作説明
7.追記
# 1.必要なもの
1.Googleアカウント
2.パソコン(スマホでもできるかも)
# 2.事前準備
1.[GoogleDrive](https://drive.google.com/)にアクセスしておきます。
2.マイドライブが表示されたら、左上の"新規"をクリックし、"フォルダ"をクリックします。
3."新しいフォルダ"というのが出てきたら、"課題管理システム"に名前を変更しましょう。
4.作成されたフォルダを開きます。
5.右クリックして"Google スプレッドシート"を選択します。
6.新しいタブに無題のスプレッドシートが開くので、"ファイル"の"名前を変更"で"課題管理システム"に名前を変更しましょう。
7.スプレッドシートを以下のようにし、"表示"タブの"固定"、"1行"を選択します。
![1609987470431.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1008955/355222f8-6f11-9704-0ec0-62296b1b2cfa.jpeg)
8."ツール"から"スクリプト エディタ"を開きます。
9.新しいタブにスクリプト エディタが出てきたら、"ファイル"から"名前を変更"を開き、"TMProject byTpro"に名前を変更しましょう。
10.今は以下のように表示されていますが、すべて削除しておきます。

```java:コード.gs
function myFunction() {
  
}
```
11."ファイル"から"New"、"HTMLファイル"を選択します。
12.名前にはindexと入力して下さい。
13.先ほどの手順で作られたHTMLファイルには以下のことが書かれていますが、いったん削除して下さい。

```html:index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    
  </body>
</html>
```

事前準備は終わりです。
# 3.作業
おもにコピペのみです。
ファイル名を間違えずにコピペして下さい。

```java:コード.gs
function form(e) {
var date = e.namedValues["締切日"];
var subject = e.namedValues["教科"];
var todo = e.namedValues["課題詳細"];
var teacher = e.namedValues["担当"];
var status = e.namedValues["ステータス"];

var ss_id = "[スプレッドシートのID]";
var sh_name = "[スプレッドシートのシート名]";
var sh = SpreadsheetApp.openById(ss_id).getSheetByName(sh_name);
var last_row = sh.getLastRow();

sh.getRange(last_row + 1, 1).setValue(date);
sh.getRange(last_row + 1, 2).setValue(subject);
sh.getRange(last_row + 1, 3).setValue(todo);
sh.getRange(last_row + 1, 4).setValue(status);
sh.getRange(last_row + 1, 5).setValue(teacher);
sh.getRange(last_row + 1, 6).insertCheckboxes();

}

function doGet() {
  var template = HtmlService.createTemplateFromFile('index');
  
  return template.evaluate();
}

function onOpen() {
  var ui = SpreadsheetApp.getUi()
  var menu = ui.createMenu("エラーが起きた場合");
  menu.addItem("カレンダーが表示されない場合","mkrment");
  menu.addItem("日付に色がつかない場合","mkrrep");
  menu.addItem("ステータスのプルダウン不良","stesreset");
  menu.addItem("ステータスの色がつかない場合","stesreset");
  menu.addToUi();
  var ui = SpreadsheetApp.getUi()
  var menu = ui.createMenu("並び替え機能");
  menu.addItem("課題を日時順に並び替え","mkrdate");
  menu.addItem("ステータスが「完」の行を削除","Rset");
  menu.addToUi();
}

function mkrdate() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A:F').activate()
  .sort({column: 1, ascending: true});
};

function mkrment() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A:A').activate();
  spreadsheet.getRange('A2:A1008').setDataValidation(SpreadsheetApp.newDataValidation()
  .setAllowInvalid(false)
  .requireDate()
  .build());
};

function Rset() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('D:D').activate();
  spreadsheet.getRange('D:D').createFilter();
  spreadsheet.getRange('D1').activate();
  var criteria = SpreadsheetApp.newFilterCriteria()
  .setHiddenValues(['', '提', '未','再返','再提'])
  .build();
  spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(4, criteria);
  spreadsheet.getRange('A:F').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('D1').activate();
  spreadsheet.getActiveSheet().getFilter().remove();
  mkrdate();
  spreadsheet.getRange('C5').activate();
  mkrment();
  spreadsheet.getRange('A1').activate();
  spreadsheet.getCurrentCell().setValue('締め切り');
  spreadsheet.getRange('B1').activate();
  spreadsheet.getCurrentCell().setValue('教科');
  spreadsheet.getRange('C1').activate();
  spreadsheet.getCurrentCell().setValue('課題');
  spreadsheet.getRange('D1').activate();
  spreadsheet.getCurrentCell().setValue('ステータス');
  spreadsheet.getRange('E1').activate();
  spreadsheet.getCurrentCell().setValue('担当');
  spreadsheet.getRange('F1').activate();
  spreadsheet.getCurrentCell().setValue('チェック欄');
  spreadsheet.getRange('F2').activate();
};

function stesreset() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('D:D').activate();
  var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(2, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenCellNotEmpty()
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('完')
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('完')
  .setBackground('#B7B7B7')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenCellNotEmpty()
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('未')
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('未')
  .setBackground('#fbbc04')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenCellNotEmpty()
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('再')
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('再返')
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('再返')
  .setBackground('#fbbc04')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenCellNotEmpty()
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('提')
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('提')
  .setBackground('#999999')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenCellNotEmpty()
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('再')
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('再提')
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('D1:D1008')])
  .whenTextEqualTo('再提')
  .setBackground('#999999')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
};

function print() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('F29').activate();
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('印刷用ページ'), true);
};

function printExit() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A29').activate();
  spreadsheet.getActiveSheet().hideSheet();
};

function mkrrep() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A:A').activate();
  var conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(0, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(0, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(6, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(6, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(6, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(6, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(6, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(6, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(6, 1);
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenCellNotEmpty()
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TODAY)
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#000000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#FF0000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#CC0000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#000000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#E06666')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#FF0000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#CC0000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateBefore(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#000000')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.push(SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenCellNotEmpty()
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateEqualTo(SpreadsheetApp.RelativeDate.TODAY)
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateEqualTo(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#B7E1CD')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
  conditionalFormatRules = spreadsheet.getActiveSheet().getConditionalFormatRules();
  conditionalFormatRules.splice(conditionalFormatRules.length - 1, 1, SpreadsheetApp.newConditionalFormatRule()
  .setRanges([spreadsheet.getRange('A1:A1008')])
  .whenDateEqualTo(SpreadsheetApp.RelativeDate.TOMORROW)
  .setBackground('#FF9900')
  .build());
  spreadsheet.getActiveSheet().setConditionalFormatRules(conditionalFormatRules);
};
```

```html:index.html
<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <h1>課題管理ソフトウェア</h1>
    <p><a href="[スプレッドシートのURL]" target="_blank">課題管理ソフトウェアへ</a></p>
    <p>↓課題の追加フォーム埋め込み版</p>
    [Googleフォームからのデータをコピペ]
    <p><a href="[GoogleフォームのURL]" target="_blank">課題が追加できない場合はこちら</a></p> 
  </body>
</html>
```

以上がコピペできたら、キーボードのCtrl+Sを同時押しして保存します。
# 4.Googleフォーム作成
1.[フォームの見本](https://docs.google.com/forms/d/1E1p2Vn-YDa0mECZHDhNr40VM9vFE5OWKjqkwbcOsKrk/edit?usp=sharing)にアクセスします。
2.右上の三つの点(送信の右側)をクリックし、コピーを作成をクリックします。
3.名前を"課題管理システム"、フォルダを"マイドライブ"の"課題管理システム"にし、OKを押します。
4.スプレッドシートに戻り、"ツール"から"フォームを作成"をクリックします。
5."質問をインポート"をクリックします(Googleフォーム　質問　インプットで調べると出てきます。)
6.課題管理システムを見つけ、クリックします。
7."すべて選択"をクリックし、"質問をインポート"をクリックします。
8.自動で保存されるので、そのまま閉じて大丈夫です。
# 5.コードの書き換え、その他
1.スクリプトエディタを開いて下さい。
2.コード.gsの8行目、[スプレッドシートのID]を自分のスプレッドシートのURLの" https://docs.google.com/spreadsheets/d/○○○○○/△△△ "の○○○○○の部分に差し替えます。
3.コード.gsの9行目、[スプレッドシートのシート名]を"シート1"に差し替えます。
4.キーボードのCtrl+Sを同時押しして保存します。
5.index.htmlの8行目、[スプレッドシートのURL]を自分のスプレッドシートのURLに差し替えます。
6.index.htmlの10行目、[Googleフォームからのデータをコピペ]を自分のスプレッドシートの"フォーム"タブの"ウェブページにフォームを埋め込み"のHTMLを埋め込むの下のコードをコピーして差し替えます。
7.index.htmlの11行目、[GoogleフォームのURL]を自分のフォームのURLに差し替えます。
8.キーボードのCtrl+Sを同時押しして保存します。
9.スクリプトエディタの"編集"タブの"現在のプロジェクトのトリガー"をクリックします。
10.トリガーの追加をクリックして、下記のように設定します。
・実行する関数を選択-form
・実行するデプロイを選択-Head
・イベントのソースを選択-スプレッドシートから
・イベントの種類を選択-フォーム送信時
・エラー通知設定-毎日通知を受け取る
11.サインイン画面になるので、Googleアカウントでログインします。
12."このアプリは Google で確認されていません"の画面左下の"詳細"をクリックし、"安全ではないページに移動"をクリックします。
13.下にスクロールして"許可"をクリックします。
14.スプレッドシートに戻り、再読込をします。開いていない場合は開き直して下さい。
15."エラーが起きた場合"タブのすべての項目を実行して下さい。
16.D行をすべて選択(上のDと書いてあるところをクリック)します。
17.選択して青くなったところの上で右クリックし、"データの入力規則"をクリックします。
18.以下のように設定を変更します(変更しない項目は載せていません)。
・セル範囲-'シート1'!D2:D1000
・条件-リストを直接指定、未,済,提,再返,再提,完
19.保存をクリックします。
20.スクリプトエディタに移ります。
21."公開"タブの"ウェブ アプリケーションとして導入"をクリックします。
21.Projrct versionはNewを選択、初版と入力します。ほかはそのままでDeployをクリックします。
22.Current web app URLをコピーし、メモ帳などに貼っておきます。
作業は以上です。お疲れ様でした。
# 6.補足説明、操作説明
先ほどコピーしたURLからいろんなことができます。多分慣れると思います。何かエラーがあれば、"エラーが起きた場合"タブから、それでも回復しなければコメント欄までどうぞ！
少しでも役に立てれば幸いです。
# 7.追記
表現がおかしいところなどあればお教え下さい。
何卒。。。
2021/01/14追記
日付に色がつかない場合を押すと、色が真っ黒になるというご指摘をいただきました。
修正するまでお待ちください。
### 読んでいただきありがとうございました。