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

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

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

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

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

2820閲覧

GASからスプレッドシートの範囲を保護したい

AI-

総合スコア5

Google スプレッドシート

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

Google Apps Script

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

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2020/02/07 04:51

編集2020/02/08 15:32

前提・実現したいこと

GASを用いてGoogle Spreadsheetを作成する際に、ある範囲に警告が出るタイプの保護を実装したいです。
spreadsheetのIDとsheet名は定まっています。
質問字ではそれぞれ xxxとabcで表記します。また、該当箇所のみを抜粋しています。

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

サービス エラー: スプレッドシート(行 7、ファイル「コード」)

該当のソースコード

google

11: function main(){ 22: var ss = SpreadsheetApp.openById("xxx"); 33: protective(ss); 44: }; 55: function protective(target) { 66: var area = target.getSheetByName("abc").getRange("O2:P6"); 77: var protection = area.protect(); 88: protection.setWarningOnly(true); 99: };

試したこと

main()を実行させたところ、.protect()の行にエラーが出ました。
areaの範囲を変えたり、.Range()にシートを含ませたりareaを変えてみましたが、改善されず。
protect()を用いずにValueを読み取り、logに出力することはできているため、範囲,シート等の指定は問題ありません。

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

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

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

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

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

mkk

2020/02/20 11:29

> GASを用いてGoogle Spreadsheetを作成する際に これは、GASを実行するスプレッドシートとは別のスプレッドシートを作成して保護するということですか? GASを実行するスプレッドシート自体のセル範囲を保護するということであれば、 提示のプログラムのIDとシート名だけ変えてうまく動作することは確認できました。
AI-

2020/02/21 03:36

GASは単独でドライブにあるものです。スプレッドシートとはリンクしていません。 定期的に実行するトリガーを装備しています。 プログラム全体としては、ドライブのフォルダIDを指定してスプレッドシートを作成させ、 templateの形に自動で編集し、最後にプロテクトをかけるというものです。 形を整えるプログラムは正常に動いているので、ID等が異なっていることは考えられません。
guest

回答1

0

ベストアンサー

うーん、何やらいただいているプログラム外(環境含む)の問題のような気がしますね。

templateの形に自動で編集 の部分は内容が分からないので置いておいて
試しに、フォルダを指定してスプレッドシートを作成して保護をかける という処理をしてみました。
こちらの環境ではうまくいきますが、このプログラムを使ってテストしてみても同様に失敗するでしょうか?
※フォルダIDを fff で表記しています

--- 追記 -------------------------------------------------
Drive APIを使っているので拡張機能から追加して下さい
---------------------------------------------------------- 

Google

1function main(){ 2 var folderID = "fff"; 3 var ss = createSpreadsheet(folderID, "テストSS"); 4 protective(ss); 5}; 6 7function protective(target) { 8 var area = target.getSheetByName("シート1").getRange("O2:P6"); 9 var protection = area.protect(); 10 protection.setWarningOnly(true); 11}; 12 13 14 15function createSpreadsheet(id, name) { 16 // create a new file of spreadsheet (250 / day) 17 var file = Drive.Files.insert({ 18 'title': name, 19 'mimeType': 'application/vnd.google-apps.spreadsheet', 20 'parents': [{'id': id}] 21 }); 22 23 // open spreadsheet 24 return SpreadsheetApp.openById(file.getId()); 25}

投稿2020/02/21 04:37

編集2020/02/21 04:53
mkk

総合スコア378

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

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

AI-

2020/02/21 06:22

ありがとうございます。 テストのコードを実行してもエラーが出ました。 別のアカウントのドライブに同じ構成を作り,同じコードを実行させたら テストのコードも目的のコードも成功したので, 環境の不具合か何かだと推測します。 環境の再構築をして移行していこうと思います。 回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問