質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
Google スプレッドシート

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

Google カレンダー

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

Q&A

解決済

1回答

2782閲覧

GASで書いたカレンダー関連の関数をスプレッドシートから呼び出したい

kon00

総合スコア7

Google スプレッドシート

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

Google カレンダー

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

0グッド

0クリップ

投稿2021/09/03 02:40

前提・実現したいこと

GoogleスプレッドシートでWBSを作成する上で、営業日の判定をしたいです。
GAS上でGoogleカレンダーを参照して祝日を判定する関数を作成し動作しています。
Googleスプレッドシートからその関数を呼び出すと以下のエラーメッセージが発生しました。

GoogleスプレッドシートからGoogleカレンダーへのアクセス承認を行う方法を教えてください。

発生している問題・エラーメッセージ

エラー Exception: The script does not have permission to perform that action. Required permissions: (https://www.googleapis.com/auth/calendar || https://www.googleapis.com/auth/calendar.readonly || https://www.google.com/calendar/feeds)(行 9)が発生しました。

該当のソースコード

# スプレッドシート =dateIsHoliday(DATE(2021,9,3))
# Google App Script // 指定日が休日(土日、祝日)か判定する関数 function dateIsHoliday(day) { // 曜日(0:日曜~6:土曜)を取得し、土日と判定された場合はtrueを返す let weekInt = day.getDay(); if (weekInt <= 0 || 6 <= weekInt) { return true; } // 祝日を判定するため、日本の祝日を公開しているGoogleカレンダーと接続する let calendarId = "ja.japanese#holiday@group.v.calendar.google.com"; let calendar = CalendarApp.getCalendarById(calendarId); // 指定日イベントが設定されているか取得し、イベントが有る場合はtrueを返す if (calendar.getEventsForDay(day).length > 0) { return true; } //土日、祝日のいずれでもない場合は、休日ではないとしてfalseを返す return false; }
# appsscript.json { "timeZone": "Asia/Tokyo", "dependencies": {}, "exceptionLogging": "STACKDRIVER", "oauthScopes": [ "https://www.googleapis.com/auth/spreadsheets.currentonly", "https://www.googleapis.com/auth/calendar.readonly" ], "runtimeVersion": "V8" }

試したこと

  • スプレッドシートのオーナーとGASのオーナーを一致させた
  • appsscript.jsonにカレンダーの認証設定を追記
  • GAS上でアカウントへのアクセス承認を実施

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答1

0

ベストアンサー

=dateIsHoliday(DATE(2021,9,3)) を スプレッドシートのセルに入れて、自作関数として動かしたいということでしょうか?

シート関数は権限がかなり制限されていて、他のスプレッドシート参照すら出来ないので、残念ながら無理だと思います。

エディタやボタン等に割り当ててスクリプトを実行する方法に変更する必要があるかと。

投稿2021/09/03 07:51

sawa

総合スコア3002

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

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

kon00

2021/09/03 23:10

回答ありがとうございます。 シート関数では難しい旨理解しました。 祝日を無視した形で実装しようと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問