3

セル編集時にui.alertをポップアップするonEditトリガーを設定したGoogleシートがあります。次に、ユーザーが[OK]または[キャンセル]を選択したかどうかに基づいてアクションを実行します。これは、トリガーとスクリプトを作成したユーザーとしてシートを使用しているときに、すべて正常に動作します。他の人にシートを共有すると(編集許可あり)、セルを編集するとスクリプトが実行されますが、[OK]または[キャンセル]をクリックすると応答が得られません。スクリプトはただ停止します。実行記録に何も表示されず、ログ情報を入力しても何も記録されません。ユーザーの応答に応じて別のアラートを表示:OKまたはキャンセル

最初のui.alertに対して[OK]をクリックすると、2番目のui.alertが表示される問題を示す非常に簡単なコードサンプルをまとめました。

function myFunction() { 

    var ui = SpreadsheetApp.getUi() 
    var response = ui.alert('Test', 'Test', ui.ButtonSet.OK_CANCEL); 

    if (response.OK) { 
     ui.alert('OK'); 
    } 

} 

Screenshot of trigger set up is here:

スクリプトを含むテストシートへのリンクはこちらです:

https://docs.google.com/spreadsheets/d/1J16lpg9G1O8hQOxB-J1R4Oy0nsrxIkgWHBfaSl6bpVs/edit#gid=0

何が起こるべきことは、あなたがセル最初ui.alertを編集することで表示され、あなたがクリックOKをクリックすると、2番目のui.alertが表示されます。あなたが試みるときに起こることが期待されるのは、2番目のui.alertが起こらないということです。

推奨事項それは許可のものですか?

答えて

0

このようにそれを試してみてください。私もBOUNDとまったく同じ問題が発生しています

var ui = SpreadsheetApp.getUi(); 
var response = ui.alert('test',test, ui.ButtonSet.OK_CANCEL); 

if (response == ui.Button.OK) { 
    ui.alert('OK'); 
} else { 
    ui.alert('NOT OK') 
} 

-------- COMMENT AFTER EDIT -----

function onEdit(e) { 
//FIXED FOR OTHER USERS IF THE FUNCTION DOESN'T NEED OTHER PERMISSIONS (simple trigger onEdit) 

    var ui = SpreadsheetApp.getUi() 
    var response = ui.alert('Test', 'Test', ui.ButtonSet.OK_CANCEL); 

    if (response == ui.Button.OK) { 
    ui.alert('OK'); 
    } else { 
    ui.alert('NOT OK') 
    } 

} 
+0

コード改正をありがとう。残念ながら、それは問題を解決しません。応答が読み取られず、スクリプトが自分以外のユーザーとして実行されても、適切なアラートは表示されません。その他の提案はありますか? –

+0

これは権利とアプリの権限に由来します。ユーザーは、他のユーザーがシートを編集する権限を持っていても、自分のアカウントでアプリを実行できるようにする必要があります。 単純なコードを実行し、他のサービスを実行する必要がない場合は、onEdit(e)という簡単なトリガーを使用できます。 –

2

応答を誤って比較しています。代わりに

if (response.OK) 

のそれは、列挙型Buttonを使用して

if (response == ui.Button.OK) 

でなければなりません。

0

スクリプト。

私はシートの作成者/所有者として問題がないと私は思います。

同じインスタンス内の他のユーザーとドキュメントを共有すると、初期のUi.Alertは警告を返さないが、結果を設定した直後に行を追加するとvar結果が設定されないそれは決してそこに着きますか?

var result = ui.alert(
    'Approve leave for ' + ApplicantName +' ?', 
    'An approval email will now be sent to ' + EmailAddress.toLowerCase() + ' do you want to continue ?', 
    ui.ButtonSet.YES_NO); 
Logger.log('Leave approve popup selection = ' + result.toString());//this is not executed 

私はtry catchブロックでこれをラップして何もしませんでした。

ジュアンサンディエゴ - Antezana
」...ああ、それは権利とアプリの権限から来て、ユーザーが他のユーザーが持っている場合でも、 アプリは自分のアカウントに対して実行できるようにすることがありますシートを編集する権利は です。

さらにこれを詳しく説明できますか?これは問題と関係がありますか?

おかげ

+0

トリガーのドキュメントhttps://developers.google.com/apps-script/を確認してくださいガイド/トリガー/#available_types_of_triggers、どのようにこのアラートをトリガーしていますか?同じイベントの場合、onEdit(e)は他のユーザーのトリックを行います。イベントが他の手段によってトリガーされた場合、他のユーザーがスクリプトを起動しているかどうかを確認してください。 –

+0

ええ、onEdit(e)これは4年間優れた広範な既知の問題の一部であることが判明しました。 : https://code.google.com/p/google-apps-script-issues/issues/detail?id=1728 –

関連する問題