【GAS】Googleフォームのエラー対処法

GAS

※本サイトはアフィリエイト広告を利用しています。

Googleフォームへの送信をトリガーとして、他のスプシに情報を転記するコードを書こうとしたら、エラーが出てしまい困ってしまったので備忘録です。
調べてもあまり対処法が見つからず、同じように困ってる人への助けのなれば嬉しいです!

今回やりたかったことと出たエラー

【やりたかったこと】
Googleフォームへの送信があった時に、入力された内容を別のスプシ(複数)に転記する
Googleフォームは入力内容がスプシに一覧として自動で保存されるが、その内容を他のスプシにも一部だけ転記したかったのでGASを使って実現したかった

【エラーの内容】

Googleフォームを送信してみると、このようなエラーが表示される

Exception: You do not have permission to call FormApp.getActiveForm. Required permissions: (https://www.googleapis.com/auth/forms.currentonly ||https://www.googleapis.com/auth/forms) at Tenki(コード:3:20)

日本語表記の場合はおそらくこう

Exception: FormApp.getActiveFormを呼び出す権限がありません。必要な権限:(https://www.googleapis.com/auth/forms.currentonly ||https://www.googleapis.com/auth/forms) at Tenki(コード:3:20)

つまり、何かしらの権限が無くて実行できないのはわかった。

その許可というのが恐らくこの2つ。

  • https://www.googleapis.com/auth/forms.currentonly
  • https://www.googleapis.com/auth/forms

で?この権限どうしたら追加できるの!?
というところで情報を探すのが大変だったんです。。。

実行しようとしたコード

今回実行したかったコードはこちらです。これから説明する対処方法をすれば動いたので、コード自体は問題無かったもよう。

function Tenki(e) {
  // フォームの回答を取得して指定のスプレッドシートに転記する
  const values = e.response.getItemResponses();
  const targetCol = 1; // 転記先の列番号

  // 回答から特定の項目を取得
  let targetValue = values[0].getResponse(); // 回答の1番目の項目(名前)を取得
  let targetValue2 = values[1].getResponse(); //回答の2番目の項目(メアド)を取得
  
  const ssid = '1uvR1wjO-B8bgX7V188I0jNcH5cylFrwurq0gvB9TA74';// 転記したいスプシのIDを指定
  const sht = SpreadsheetApp.openById(ssid).getSheetByName('シート1');// 転記したいスプシのシート名を指定
  const lrow = sht.getLastRow();//最終行を取得

  //取得したデータを転記
  sht.getRange(lrow + 1, targetCol).setValue(targetValue);
  sht.getRange(lrow + 1, targetCol+1).setValue(targetValue2);
}  

対処方法

GASを書く画面の左側に、歯車マークがあるのでそちらをクリック

クリックすると、下図のような設定の画面がでてくるので「appsscript.json」マニフェスト ファイルをエディタで表示するという項目にチェックを入れる

コードを書く画面に戻ると、コード.gsの上にが表示されるようになる

おそらくデフォルトでは下図ような内容になっている

ここに、先ほど足りないと言われた権限を追加していく
(下記をコピペしてご利用下さい)
エラーで出たものに加えて、spredsheetsというものが増えていますが、2つだけ追加して実行したら「spredsheetsも追加して」っていうエラーが出たのでこちらも必要だと判明しました…
実行したい内容によっては別の権限も追加してとエラーが出るかもしれないので、同様の手順で追加してもらえればOKです。

    "oauthScopes": [
   "https://www.googleapis.com/auth/forms",
   "https://www.googleapis.com/auth/forms.currentonly",
   "https://www.googleapis.com/auth/spreadsheets"
  ]

最終的にできたコード画面がこちら

赤枠で囲った『 , 』なのですが、これを追加しないと保存をしようとしたときにこのようなエラーになります。

下にコードを追加する場合は、カンマが必要なのでお気を付けください。私はこれに引っかかってしばらく悩みました^^;

まとめ

というわけで今回は、GASを使ってGoogleフォームの入力内容をスプレッドシートに転記するコードと、その際に出たエラーの対処法について紹介しました。
同じエラーで困っている人の助けになれば幸いです。

お問い合わせ、お仕事のご依頼などがありましたら下記のお問い合わせフォームからご連絡ください。
お問い合わせフォーム
VBAの作成であれば50,000円ほどから、自分で使うVBAの書き方で詰まっている方のお手伝いであれば10,000円ほどから承ります。

GAS
スポンサーリンク
スポンサーリンク
りこをフォローする
エクセルVBAの寺子屋

コメント

タイトルとURLをコピーしました