前提・実現したいこと
googleformから送られた添付ファイル名を”日付+_+ファイル名”の形にリネームしてドライブに格納したいです。
発生している問題・エラーメッセージ
ReferenceError: itemresponses is not defined
at myFunction(コード:8:3)
該当のソースコード
function myFunction(e) {
var itemResponses;
var fileName;
var attachment;
// フォームの回答結果の12こめ(添付ファイル情報)を取得
itemResponses = e.response.getItemResponses();
attachment = itemResponses[11].getResponse();
// 日付と元ファイル名を連結させて新しいファイル名を作成する
fileName = (new Date(), "JST","yyMMdd") + '_' + attachment;
// アップロードされたファイルの名前を設定
attachment.setName(fileName);
}
試したこと
トリガーを設定し、フォームから回答しています。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
var itemResponse と宣言しているのに、itemResponses という sが付いたやつが登場してますが、そこは間違いでは?
ありがとうございます。スペルミスについては修正して試してみます!
スペルミスを更新しましたが、e.responseのところにエラーが出るようです。。
エラー
TypeError: Cannot read property 'response' of undefined
myFunction @ コード.gs:7
'response' が undefined ということですが、フォーム送信のトリガーで実行されたログでしょうか?
エディタの実行ボタンを押して確認しても、eの中身は空なのでそのエラーが出るのは当たり前なのです。
だいぶ時間が経ってしまってうっかりエディタで実行していました…。
結果、ファイルは送れますが、リネームはできません…。
エラーは以下でした…
エラー TypeError: itemResponses[7].getItemResponses is not a function
at myFunction(コード:7:31)
当方職業プログラマではなく全く基本的なことかと思いますが、因みにここで"itemResponses"と"ItemResponses"の違いは許容されるのでしょうか?(後者はIが大文字)
とりあえず、 itemresponses[7].getResponse() がエラーになるのは、配列は 0スタートなので 7番目の質問は [6] となります。大文字、小文字は厳密にやってください。itemresponsesじゃなくて上の行でitemResponsesとしてますよね。
ただしわかりづらいかもしれませんが、.getItemResponses() は自ら定義している itemResponse とは、まったく別モノです。(メソッドというもの)
ざっと見ましたけど訂正箇所が多いので、参考にされたサイトそのままをまずは作成し動くことを確認してから、少しずつ変えた方がよいですよ。その上でどうしてもわからないエラー箇所を質問すべきです。
現行のコードに置き換えました。
やはりできません…。
サンプルは結構特殊な動きをするコードで(環境再現不可能)、最低限必要と思われる箇所のみを抜き出しましたが、無理そうですかね…。
>やはりできません
ログの見方は理解されているようですから、単に「できません」ではなく、どういったエラーが出ているのかどこで止まっているのかを確認しましょう。エラーメッセージを切り出して検索してみましょう。
同じようなことを解説しているサイトもあるので、諦めずトライ&エラーを繰り返せば無理ではないです。 "フォーム 添付ファイル GAS リネーム" で検索してみると良いでしょう。
あと、日付のフォーマット箇所の間違いがあるので GAS 日付 あたりでも検索して調べましょう。
エラーコードは同様です。本業ではなくまとまった時間を割くのが厳しいため、今回はペンディングします。
ご回答いただいた方々ありがとうございました。
あなたの回答
tips
プレビュー