2017-06-24 18 views
0

オークション中古車に関するGoogleフォームに基づいてスプレッドシートの上にGoogleスクリプトを作成しています。私の先生から次の指示がありました:Google Script Editorを使用してスプレッドシートに追加する

スプレッドシートでは、最高入札額を探してGoogleフォームフィールドを更新する機能を備えたGoogleスクリプトを追加します。機能1:入札欄のすべての値を取得し、ループ。機能2:Googleフォームを開き、フォームのテキストフィールドを更新します(たとえば、現在の最高入札価格は$ xxxxです。入札してください)。 xxxxは最高入札価格です。 (参照:https://developers.google.com/apps-script/reference/forms/)上記の機能を起動し、Googleフォームを更新するトリガーをスクリプト内に作成します。

そしてここでは私のコードです:

function myFunction(e) { 
    var ss = SpreadsheetApp.getActive().getSheetByName('Used Car Auction') 
    var form = FormApp.openById('1D0XE9womWv2T_rFYTtc9enQgIhCkxaK8SErxNkTh7NE') 
    ScriptApp.newTrigger('onFormSubmit') 
    .forForm(form) 
    .onFormSubmit() 
    .create(); 
    var values = SpreadsheetApp.getActiveSheet().getDataRange().getValues() 
    var bid = values [88000] 
    var highest = Math.max(bid).toString(); 
    formsetTitle('Used car auction:' + 'The highest bid is:' + highest) 
    .setDescription ('Description of Form') 
    .setConfirmationMessage('Thanks for bidding!') 
    .setAllowResponseEdits(false) 
    .setAcceptingResponses(true); 
    } 

Googleは言う:TypeError例外は:ヌルの "getSheetByName" メソッドを呼び出すことはできません。

私は間違っていますか?私は5日間コーディングしましたが、これは私を混乱させています。

それ以外の場合は、上記の手順に従って適切なトラックにいらっしゃいますか?

+1

フォームが送信された時点で起動されますが、その時点でスプレッドシートが開いている/アクティブではありません。だから、スプレッドシートのIDを指定し、それを 'openById(id)'で開きたいと思うでしょう。 – Casper

答えて

1

コードにいくつかの基本的なエラーがあります。 Googleスプレッドシートのワークシートに値を書き込むには、特定の手順を実行する必要があります。

ステップ-1:スプレッドシートオブジェクトを取得します。

e.g. var spreadsheetObject = SpreadsheetApp.getActiveSpreadsheet(); -> If you are using bounded script.

OR e.g. var spreadsheetObject = SpreadsheetApp.openById(<SPREADSHEET_ID>); -> If you are using standalone script.

ステップ-2:ワークシートオブジェクトを取得します。

e.g. var worksheetObject = spreadsheetObject.getSheetByName(<NAME_OF_WORKSHEET>);

あなたがそのスプレッドシートオブジェクトを取得せずにワークシートを開こうとしているため、このTypeError: Cannot call method "getSheetByName" of nullエラーを取得しています。

希望します。

関連する問題