コードには多くの基本的なエラーがあります。その結果、 によって返された値listBox
が定義されていませんでしCallBackElement
た。
listBox
それに加えて、が に追加されなかったため、UI の構成が正しくありませんでしたpanel
。
関数では、変数がすでに であり、ドキュメントに直接挿入click
できるため、コードを簡素化できます。images[index]
blob
私のテストスクリプトは次のようになります。ソース参照を変更して、自分の側でテストできるようにしました...値を復元することを忘れないでください。
ところで、いくつかのスタイル属性を追加して見栄えを良くすることでUIを改善することもできますが、これはあなたのコードの単純化されたドラフトバージョンだったと思います...そうではありませんか?
function sideBar(){
var uiInstance = UiApp.createApplication()
.setTitle('WriteWell')
.setWidth(250);
var panel = uiInstance.createVerticalPanel();
uiInstance.add(panel);
var handler = uiInstance.createServerHandler('click').addCallbackElement(panel);
var box = uiInstance.createListBox().setId("select").setName("mySelector");
var images = [1,2,3,4,5];// restore your code here too, this was for test only...
for(var i = 0; i<images.length; i++){
box.addItem(""+i,i);
}
panel.add(box);
panel.add(uiInstance.createButton("Add Icon").addClickHandler(handler));
DocumentApp.getUi().showSidebar(uiInstance);
}
function click(eventInfo){
var uiInstance = UiApp.getActiveApplication();
var index = parseInt(eventInfo.parameter.mySelector);
var id = "1E6yoROb52QjICsEbGVXIBdz8KhdFU_5gimWlJUbu8DI";// this is the ID of a shared document, not your doc.
var imageResource = DocumentApp.openById(id);
var images = imageResource.getBody().getImages();
DocumentApp.getActiveDocument().getCursor().insertInlineImage(images[index]);
}
編集:画像サイズを管理し、UIを(わずかに)改善する方法をもう少しテストするために、小さなスクリプトを作成しました...テストできるコードは次のとおりです
function sideBar(){
var uiInstance = UiApp.createApplication()
.setTitle('WriteWell')
.setWidth(250);
var panel = uiInstance.createVerticalPanel().setStyleAttributes({'padding':'25px','background':'#ffffee'}).setHeight('100%').setWidth('100%');
uiInstance.add(panel);
var handler = uiInstance.createServerHandler('click').addCallbackElement(panel);
var box = uiInstance.createListBox().setId("select").setName("mySelector");
var id = "1E6yoROb52QjICsEbGVXIBdz8KhdFU_5gimWlJUbu8DI";// this is the ID of a shared document, not your doc.
var imageResource = DocumentApp.openById(id);
var images = imageResource.getBody().getImages();// I used it to get some images
for(var i = 0; i<images.length; i++){
box.addItem(images[i].getType()+'-'+i,i);
}
panel.add(box);
panel.add(uiInstance.createButton("Add Icon").addClickHandler(handler));
DocumentApp.getUi().showSidebar(uiInstance);
}
function click(eventInfo){
var uiInstance = UiApp.getActiveApplication();
var index = parseInt(eventInfo.parameter.mySelector);
var id = "1E6yoROb52QjICsEbGVXIBdz8KhdFU_5gimWlJUbu8DI";// this is the ID of a shared document, not your doc.
var imageResource = DocumentApp.openById(id);
var images = imageResource.getBody().getImages();
var newImage = DocumentApp.getActiveDocument().getCursor().insertInlineImage(images[index]);
var originalH = newImage.getHeight();
var originalW = newImage.getWidth();
var ratio = originalW/originalH;
newImage.setWidth(100).setHeight(100/ratio);
}
