🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

1回答

1382閲覧

スプレッドシートの列に日付を入れ、土日祝日を自動で色別にしたい

NobbyHobby

総合スコア0

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google カレンダー

Google カレンダーは、Google社が提供する無料のスケジュール管理ツールです。パソコンやスマートフォン、タブレットなどからアクセスし、スケジュールの追加・変更が可能。Googleアカウントがあれば誰でも使用できます。

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2021/02/11 14:52

前提・実現したいこと

スプレッドシート初心者で、毎日の出欠管理票を作ろうとしています。

自動的に日本の祝日のあるカレンダーが反映して、スプレッドシートの列(縦)に記入できるようにしたいです。

数年分くらいのものを作りたいと思っていますが、祝日の管理を毎年するのを避けるためにカレンダー連携で自動的に日付が記入され、土日祝日の色分けもできるようにしたいです。

1シートで1ヶ月分 × 12枚(12ヶ月分) × 数年分(くらい)

発生している問題!

スプレッドシートとGoogleカレンダーををGASで連携するところまではできましたが、これを利用したほうがいいのか、他にもやり方があるのか、知りたいです。?

GASで連携はできましたが、カレンダーを反映させるスクリプトエディタの記入方法もわかりません。

このように表はつくったのですが、あとはカレンダーが上手く機能すればいいだけです。
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

macaron_xxx

2021/02/11 23:04

「カレンダーが上手く機能すればいい」とは?
NobbyHobby

2021/02/12 02:17

ご質問ありがとうございます。 スプレッドシート外から、土日祝日等もわかる日本のカレンダーを自動的にスプレッドシートに適応させることができればいいということです。 スプレッドシート、GAS、エディタなどで使われる用語を知らないので、言葉足らずですがご理解いただけるでしょうか。
NobbyHobby

2021/02/12 02:56

現在作っている縦列(A列、B列)のカレンダーは表計算と同じように作っていて、日本のカレンダー(祝日)とは連携されていません。
SnowMonkey

2021/02/13 09:57

コードやエラーメッセージをお示しになった方が、アドバイスをもらいやすいと思いますよ。
NobbyHobby

2021/02/14 09:15 編集

ご指摘ありがとうございます。 エラーメッセージはありません。 コードは、以下になります。なお、コード記入はド素人でして、このコードも1年以上前にインターネット上で検索して拾ってきて、当時は理解でき自分なりに変更できたのですが、今は完全に忘れてしまい、全くわからないでいます。 ------------------------------------------------------------------------------------------------------------ function doPost(e){ var name = e.parameters["value"][0]; //IFTTTから名前を受け取る1 var id = '1AGqbhUiSy47sXSsmDnfQkApGEGq_cVDKpxQFU0ZON-M/edit#gid=0'; //スプレッドシートファイルのID(URL) var ss = SpreadsheetApp.openById(id); var sheet = ss.getSheetByName(name); var day = new Array('日', '月', '火', '水', '木', '金', '土'); var date = new Date(); //日時の取得 var year = date.getFullYear(); var mon = date.getMonth()+1; var d = date.getDate(); var min = date.getMinutes(); var time = date.getTime(); var lm25 = ((mon!=1)?year:year-1)+'/0'+((mon>26)?mon:mon-1)+'/'+25; var llm25 = ((mon!=1&&mon!=2)?year:year-1)+'/0'+((mon>26)?mon-1:mon-2)+'/'+25; var row = sheet.getLastRow(); var ld = sheet.getRange('A'+row).getValue(); //最後の行の日付を取得(Date型?) var ldy = ld.getFullYear(); var ldm = ld.getMonth(); var ldd = ld.getDate(); var ldt = ld.getTime(); var lds = ld.getFullYear()+'/'+(mon>=10?mon:'0'+mon)+'/'+ld.getDate(); var l25, ll25; //新たに取得した日付が最終行の日付と一致しないかどうかで分岐 if(mon != ldm+1 || d != ldd){ //一致しなければ出勤扱い、新しい行に打刻 var range = sheet.getRange('A'+(row+1)+':D'+(row+1)); range.setValues([[year+'/'+(mon>9?mon:'0'+mon)+'/'+d, day[date.getDay()], "", date.getHours()+':'+(min>=10?min:'0'+min)]]); } else{ //一致すれば終了時刻に上書き var range = sheet.getRange('E'+row+':F'+row); range.setValues([[date.getHours()+':'+(min>9?min:'0'+min), '=E'+row+'-D'+row]]); } } ------------------------------------------------------------------------------------------------------------
SnowMonkey

2021/02/14 10:11

私も初めてか2度目の質問で指摘されてのですが、ここではなくて質問自体を修正して、質問本文のところに書き込むよう勧めます。その方がこの質問を覗いた人に見やすくなります。今のままだと、コメント欄をわざわざ開かないとみることができません。 ちなみに、<code>を押して以下のようなタグを出してそこにコードを記載してください。 ```ここに言語を入力 コード ```
NobbyHobby

2021/02/14 11:34

いろいろとありがとうございます。 勉強しなおしてみます。 私には質問内容そのものが高度すぎたのかもしれません。
guest

回答1

0

自己解決

勉強しなおしてみます。
いろいろとありがとうございました。

投稿2021/02/14 11:35

NobbyHobby

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問